Mongoosedb:按用户名查询

时间:2016-09-12 10:25:39

标签: node.js mongodb mongoose mongodb-query

问题问题:我正在使用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);
   })
 });

3 个答案:

答案 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);
    });
});