猫鼬.findOne错误返回找到的模型?

时间:2018-08-08 11:19:30

标签: javascript node.js mongodb mongoose

因此,我试图通过使用mongoose中的findOne函数来访问此帐户,并且尝试尝试console.log错误,但错误只是找到的正确模型。一旦找到正确的模型,我想要访问架构中的嵌套对象之一,以便我可以编辑值。

我不确定为什么会发生这种情况,下面我将代码以及记录到控制台中的错误放在下面,如果需要,我可以提供更多信息。

    let accountSchema = mongoose.Schema({
       username:{
           type: String,
           required: true,
           index: true,
           unique: true,
       },
       password:{
           type: String,
           required: true,
       },
       money:{
           type: Number,

       },
       inventory: { type: [{
           weed: { type: Number },
           coke: { type: Number },
       }]},
  });


mp.events.addCommand('coke', (player) => {
    console.log(player.name);
    Account.findOne({username: 'a'}, function(acc, err) {
        if(err) return console.log(err);
        console.log(acc.username);
       acc.inventory[1] = acc.inventory[1] + 1;
       acc.save(function(err){
          if(err) return player.outputChatBox('Not logged in');
          player.outputChatBox('Added 1 coke');
       });
    });
});

(Console) {"_id":"5b6acbbbc285477e39514cb9","username":"a","password":"$2a$10$XABqooqFRINYVdJ79.i2E.5xdpitRrfZxUBmIPAZjjaXKvvLDc2y2","money":5000,"inventory":[{"_id":"5b6acbbbc285477e39514cbb","weed":0},{"_id":"5b6acbbbc285477e39514cba","coke":0}],"__v":0}

2 个答案:

答案 0 :(得分:4)

.findOne方法的回调函数具有以下签名:

function (err, obj) {

}

您使用的参数顺序错误-错误的对象是第一个参数,找到的对象是第二个参数。

答案 1 :(得分:2)

.findOne 方法回调必须具有以下参数function (err, res)。因此,您将它们设置为相反的顺序。

选中http://mongoosejs.com/docs/api.html#model_Model.findOne