使用Mongoose

时间:2016-01-29 03:54:07

标签: node.js mongodb mongoose middleware

我正在尝试编写一个中间件函数(当使用用户名/密码发出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
  }
});

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

尝试非常初始创建一个函数来获取user响应

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

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

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