【发布时间】:2017-03-13 05:50:30
【问题描述】:
我想让我的应用程序的用户只增加一次value。以下代码失败,因为 mongoose 中的 update 是异步的。我的检查 if(user.valueIncremented) 对这个 api 的下一个连续请求失败,因为此时 valueIncremented 没有更新,但它将在下一个事件循环中。那么,我该怎么办,好先生?
var Account = new Schema({
_id: Schema.Types.ObjectId,
value: {type: Number, default: 0},
valueIncremented: {type: Boolean, default: false}
});
router.post('/incrementValue', function(req, res, next) {
var user = req.user;
if(user.valueIncremented) {
return next();
}
else {
incrementValue();
}
function incrementValue(){
var condition = {
_id: user._id;
}
var update = {
$inc: {
value: 1
},
$set: {
valueIncremented: true
}
}
Account.update(condition, update).exec();
}
})
【问题讨论】:
-
你在哪里设置 req.user.valueIncremented?它到底是怎么失败的?
标签: express mongoose passport.js atomic