繁体   English   中英

在保存到Mongoose中之前如何检查数据库中是否存在嵌入式文档

[英]How to check if an embedded document exists in database before saving in Mongoose

我正在使用Express,Mongoose和PassportJS构建基本的身份验证系统。 我要做的是检查数据库,如果输入的用户名和密码已经存在于数据库中。 这是下面的示例代码:

//Post: /signup
app.post('/signup', function (req, res) {
  var username = req.body.person.user.username;
  var password = req.body.person.user.password;

  Person.user.find({'username': username}, function (err, user) {
    if (err) {
      console.log(err.name);
    } else {
      console.log('User Found');
    }
  });
});

问题是它返回这种错误:

TypeError: Cannot call method 'find' of undefined

有人可以帮我吗。

正如robertklep指出的那样,您没有正确检查用户的存在。 另外,由于用户名很可能是唯一的,因此您可以使用findOne(findOne()返回单个对象,而find()也可能返回单个对象,但会将其包装在数组中)。

Person.findOne({'username': username}, function (err, user) {
  if (err) {
     console.log(err.name);
     return;
  }
  if (!user)
    console.log('User not Found');
    return;
  }
  console.log('User found');

});

我认为您正在寻找这个:

Person.find({ 'user.username' : username }, ...)

FWIW,如果没有错误地调用回调函数,则并不表示已找到用户,这仅意味着执行查询没有错误。 但是user仍然可以为null,这意味着查询没有任何匹配结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM