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