0
我想讓我的應用程序的用戶僅增加一次value
。以下代碼失敗,因爲貓鼬中的update
是異步的。我的支票if(user.valueIncremented)
因爲此時未更新valueIncremented
,但會在下一個事件循環中更新,因此對此API的下一個連續請求失敗。那麼,我該怎麼做,先生?Mongoose中的原子更新
var Account = new Schema({
\t _id: Schema.Types.ObjectId,
\t value: {type: Number, default: 0},
\t valueIncremented: {type: Boolean, default: false}
});
router.post('/incrementValue', function(req, res, next) {
\t var user = req.user;
\t if(user.valueIncremented) {
\t \t return next();
\t }
\t else {
\t \t incrementValue();
\t }
\t function incrementValue(){
\t \t var condition = {
\t \t \t _id: user._id;
\t \t }
\t \t var update = {
\t \t \t $inc: {
\t \t \t \t value: 1
\t \t \t },
\t \t \t $set: {
\t \t \t \t valueIncremented: true
\t \t \t }
\t \t }
\t \t Account.update(condition, update).exec();
\t }
}) \t
你在哪裏設置req.user.valueIncremented?它是如何失敗的? –