字段中获取数据"/>
使用NodeJS Express服务器从MongoDb的ObjectId以外的字段中获取数据
我不想使用自动生成的_id字段,而使用router.get从我的集合中获取数据。我一直不断收到错误消息:
"message": "Cast to ObjectId failed for value \"xxxxxxxxxx\" at path \"_id\" for model \"Member\""
这是我的路线:
GET http://localhost:3000/members/xxxxxxxxxx
这是我的请求功能
async function getMemberBySSN(req, res, next) {
let member
try {
member = Member.find({ ssn: req.params.ssn }, null);
if (member == null) {
return res.status(404).json({ message: "Cannot find member" });
}
} catch(e) {
return res.status(500).json({ message: e.message });
}
res.member = member
next();
}
我从这条路线打来的电话:
router.get("/:ssn", getMemberBySSN, (req, res) => {
res.json(res.member);
})
这是模特
const mongoose = require("mongoose");
// Object containing keys for different props in member
const memberSchema = new mongoose.Schema({
ssn: {
type: String,
required: true
},
name: {
type: String,
required: true
},
email: {
type: String,
require: true
},
isJunior: {
type: Boolean,
required: true
},
isAdmin: {
type: Boolean,
required: true
},
});
//params: name of model in db, the schema that corresponds to the model, the collection in db
module.exports = mongoose.model("Member", memberSchema, "_splurggenMembers");
所有帮助将不胜感激。谢谢。
回答如下:您可以使用以下代码通过ssn查找成员
Member.find({ ssn: req.params.ssn}, null);
并且如果您不想在响应中输出对象ID,则在架构模型中使用以下代码从输出响应中删除ID。
memberSchema.set('toJSON', {
virtuals: true,
transform: function (doc, ret) {
delete ret._id;
}
});
更多推荐
使用NodeJS Express服务器从MongoDb的ObjectId以外的字段中获取数据
发布评论