【发布时间】:2013-02-14 16:23:37
【问题描述】:
我一直在尝试使用 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");
}
});
}
【问题讨论】:
-
您是否考虑将用户名设置为在架构中是唯一的。
-
@almypal 宾果游戏!我想有时我需要休息一下,解决办法就是这么简单! :) 您是否会考虑添加一个简短的答案来说明我该怎么做,以便我可以接受您的回答?非常感谢!
标签: javascript node.js mongodb mongoose synchronous