【问题标题】:Check for existing user using Mongoose使用 Mongoose 检查现有用户
【发布时间】:2016-01-29 03:54:07
【问题描述】:

我正在尝试编写一个中间件函数(当使用用户名/密码发出 POST 请求时)检查正在创建的用户是否已存在于数据库中。我不知道我是否正确地这样做了。

User.find({ username: req.body.username }) 返回一个包含(或不包含)用户(如果存在)的对象......但是如果找到相同用户名下的用户,如何正确地return 退出?每当我使用 Mocha 进行测试时,res.body.msg 都会出现未定义。

代码:

module.exports = exports = function(req, res, next) {
  User.find({ username: req.body.username }, (err, user) => {
    if (err) return handleDBError(err, res);
    if (user) return res.status(200).json({ msg: 'an account with this username already exists' });
  });
  next();
};

用户架构:

var userSchema = new mongoose.Schema({
  username: String,
  authentication: {
    email: String,
    password: String
  }
});

【问题讨论】:

    标签: node.js mongodb mongoose middleware


    【解决方案1】:

    尝试一下,最初创建一个函数来获取user 响应

    function findUser(arg, callback) {
      /* write your query here */
      return callback(pass response here)
    }
    

    然后在你想要的地方使用它

    findUser(arg,function(callbackResponse) { /*do something*/ })
    

    【讨论】:

      【解决方案2】:

      由于 nodejs 是异步的,因此很有可能在您尝试读取响应之后才发送响应。确保让阅读过程一直等到发送响应。我个人使用护照来处理。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-10
        • 2020-05-17
        • 2013-02-20
        • 2016-04-27
        • 2012-03-15
        • 1970-01-01
        • 2016-01-22
        • 1970-01-01
        相关资源
        最近更新 更多