我有一个用户控制器,它有一个创建方法,可以在创建用户之前检查数据库的电子邮件和用户名唯一性(这是为了解决 SailsJS 的 mongodb adpater 中不尊重唯一属性标志的错误 - 版本 0.10 .5)。
代码如下所示:
User.find({ email: req.body.email }, function (err, user) {
if(user) {
return res.badRequest('Unique email constraint. Email is already used.');
}
});
User.create(req.body).exec(function (err, user) {
// Code to catch and manage err or new user
}
我期望的是,如果电子邮件已经存在于数据库(mongodb)中,使用 res.badRequest() 发送 400,然后执行结束。
发生的情况是响应已发送,但随后控制转移到 User.create() - 执行并未结束。我怀疑 return res.badRequest 正在将控制权返回给调用函数(User.findOne),并从那里继续执行。
我尝试使用 res.badRequest().end() 但这会使客户端挂起(没有响应),并在返回 res.badRequest() 生成“标头发送”错误后使用 res.end()。
如果找到现有电子邮件,我如何结束此请求的执行?