问题问题:我正在使用MongooseDB和Nodejs,我有用户架构
var UserSchema = new mongoose.Schema({
userEmail: String
});
如何使用userEmail查询?
我试过以下但没有结果。在我的postman
上,我被转换为ObjectId失败错误
router.get('/:userEmail', function(req, res, next) {
User.find(req.params.userEmail, function (err, userDetails) {
if(err){
return next(err);
}res.json(userDetails);
})
});
答案 0 :(得分:1)
您需要创建一个具有userEmail
属性和req.params
对象值的查询对象或文档。在您的情况下,这将是:
router.get('/:userEmail', function(req, res, next) {
User.find({ "userEmail": req.params.userEmail }, function(err, userDetails) {
if(err){
return next(err);
}
res.json(userDetails);
});
});
答案 1 :(得分:1)
请尝试使用此语法
router.get('/:userEmail', function(req, res, next) {
User.find({"userEmail":req.params.userEmail}, function (err, userDetails) {
if(err){
return next(err);
}res.json(userDetails);
})
});

您必须在要查询数据的字段上添加条件。
答案 2 :(得分:1)
我无法重现您的错误“ObjectId failed error”。但是,我正在添加另一个答案,为您提供更多选择。
以下内容与其他答案略有不同: -
1)“lean()”用于确保您返回一个纯JavaScript对象
2)虽然我不确定你是否需要响应中的“Id”,但是从JSON响应中排除了“_id”。这只是为了检查响应中的“id”是否导致问题。
router.get('/:userEmail', function(req, res, next) {
User.find({"userEmail": req.params.userEmail}, {"_id":false}).lean().exec(function(err, users) {
if (err) {
return next(err);
}
console.log(users);
res.json(users);
});
});