javascript - 不能用 mongoose 将项目 $push 到数组中

标签 javascript node.js mongodb mongoose

我正在尝试使用 POST 请求将项目添加到用户对象内的集合中。

  User.findOneAndUpdate(
    {"_id": req.body.userid}, 
    {$push: {'shopping_list': req.body.itemid}},
    {safe: true, upsert: true},
    function(err, Model){
      console.log(err, Model);
      if(err){
        handleError(res, err);
      }
      return res.status(201).json(Model);
    }
  );

我不断收到以下错误:

{"name":"MongoError","message":"exception: '$push' is empty. You must specify a field like so: {$push: {: ...}}","value":{"_id":"5546cc0483b0186428e252cc","email":"lilly@test.com","passwordHash":"Q+VpK9L+I/DhAm7w01AArMacBkXEdyHp3zGF6JyJVzDhwgHpws4z8IBxycI7xrRX6Do2AEe/BvI37HauvAc6WA==","salt":"0Bi6XW0YuxutizQY3PZH4Q==","budget":5000,"shopping_list":[],"cupboard":[],"meals":[],"__v":0},"errmsg":"exception: '$push' is empty. You must specify a field like so: {$push: {: ...}}","code":9,"ok":0}

我不明白为什么会发生这种情况,因为字段“shopping_list”清晰可见并且传递了一个值...

有人知道我做错了什么吗??

最佳答案

默认情况下,Mongoose 不会更新未出现在模型架构中的字段。

因此,要么将 shopping_list 添加到您的架构中,要么设置 strict架构上的选项设置为 false

关于javascript - 不能用 mongoose 将项目 $push 到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30042533/

相关文章:

javascript - 将 <select> 值传递给函数参数

javascript - jsfiddle中如何进行外部调用?

node.js - 上传文件时nodejs和express错误, "cannot read property of undefined"

javascript - 使用 Cheerio 抓取多个网页

node.js - 在第一个参数中将变量传递到 mongoose 查询中

mongodb - 将 MongoDB 中的字符串日期转换为时间戳

javascript - 使用 Sencha 5.0 的 vbox 布局

javascript - Angular typescript 将日期分配给 DateConstructor

node.js - 使用 Nodejs over SOAP 和 x509 证书对 Microsoft EWS 进行身份验证

mongodb - 如何比较 mongodb 中的浮点值?