【问题标题】:Mongoose .findOne Error returns the model found?Mongoose .findOne 错误返回找到的模型?
【发布时间】:2019-01-15 15:25:38
【问题描述】:

所以我试图通过使用 mongoose 中的 findOne 函数来访问此帐户,并且我试图控制台记录错误,但错误只是找到了正确的模型。一旦我找到正确的模型,我想要访问架构中的嵌套对象之一,以便我可以编辑该值。

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

    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}

【问题讨论】:

  • 添加到顶部。

标签: javascript node.js mongodb mongoose


【解决方案1】:

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

查看http://mongoosejs.com/docs/api.html#model_Model.findOne

【讨论】:

    【解决方案2】:

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

    function (err, obj) {
    
    }
    

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

    【讨论】:

    • 感谢您的帮助
    • 这是一个常见的错误。它也发生在我身上很多时间。这就是我现在使用 Promise API 的原因。
    猜你喜欢
    • 1970-01-01
    • 2016-10-08
    • 2016-07-14
    • 2018-07-07
    • 2015-04-30
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多