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

Cannot $push item into array with 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