【发布时间】:2020-08-23 22:02:22
【问题描述】:
我想使用 router.get 来从我的集合中获取数据,而不必使用自动生成的 _id 字段。我一直在收到错误:
"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");
所有帮助将不胜感激。谢谢。
【问题讨论】:
标签: node.js mongodb express mongoose mongodb-query