Mongoose FindOneAndUpdate覆盖我的值

时间:2016-08-07 00:16:21

标签: javascript node.js mongodb mongoose mongoose-schema

我试图像Discord服务器一样设置银行帐户,这是我的问题:

我有这个架构:

var ladderboardSchema = new Schema({
    name: String,
    victories: {type: Number, default: 0},
    bank: {type: Number, default: 5000},
    date: {type: Date, default: Date.now}
});

其次是这个模型:

var ladderboardPlayer = mongoose.model('Ladder', ladderboardSchema);

正如你所看到的,我银行的基本价值应该是5000,当我的函数被调用时,我希望我的银行值增加该玩家的指定金额!

function setMoney(playerName, amount){
    var query = {name: playerName};
    var update = {$inc: {bank:amount} };
    var options = {upsert: true, new: true, setDefaultsOnInsert: true};
    ladderboardPlayer.findOneAndUpdate(query, update, options, function(err, doc){
        if(!err) console.error('updated!');
    });
}

例如,假设我运行setMoney('John', 500);,MongoDB将返回我:

{ "_id" : ObjectId("57a67d1e874dfe1eb4163888"), "name" : "John", "bank" : 500, "__v" : 0, "victories" : 0, "date" : ISODate("2016-08-07T00:13:18.192Z") }

它应该返回5500但是我有点丢失,因为我已经尝试了很多解决方案,即使'new'和'setDefaultsOnInsert'设置为true

也没有工作

0 个答案:

没有答案