我一直在尝试使用 NodeJS 实现 RESTFul API,并使用 Mongoose (MongoDB) 作为数据库后端。
以下示例代码在同时发送请求时使用相同的用户名注册多个用户,这不是我想要的。虽然我尝试添加支票!
我知道这是因为 NodeJS 的异步特性而发生的,但我找不到正确执行此操作的方法。看起来“findOne”方法立即返回,导致 registerUser 返回,然后处理另一个请求。
顺便说一句,我不想用单独的API函数检查现有用户,我需要在注册阶段检查。有没有办法做到这一点?
Controller.prototype.registerUser = function (req, res) {
Users.findOne({'user_name': req.body.user_name}, function(err, user) {
if(!user) {
new User({user_name: req.body.user_name}).save(function(err) {
if(!err) {
res.send("User saved");
} else {
res.send("DB Error: Could not save user!");
}
});
} else {
res.send("User exists");
}
});
}