我正在尝试使用 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/