【发布时间】:2017-11-27 04:55:50
【问题描述】:
我正在尝试更新文档中的数组,如果它不存在则添加对象,否则替换数组中的对象。但是除了 $set 参数之外,没有任何东西 ($push, $addToSet) 做任何事情,并且 $set 按预期工作 - 覆盖整个数组。 我的猫鼬模式:
var cartSchema = mongoose.Schema({
mail: String,
items: Array
});
发布请求处理程序:
app.post('/addToCart', function(req, res) {
var request = req.body;
Cart.findOneAndUpdate({
"mail": request.mail
}, {
$addToSet: {
"items": request.item
}
}, {
upsert: true
},
function(err, result) {
console.log(result);
}
);
res.send(true);
});
我从客户端发送的数据:
{
"mail":"test@gmail.com",
"item":{
"_id":"59da78db7e9e0433280578ec",
"manufacturer":"Schecter",
"referenceNo":"Daemon-412",
"type":"Gitare",
"image":"images/ba9727909d6c3c26412341907e7e12041507489988265.jpeg",
"__v":0,
"subcategories":[
"Elektricne"
]
}
}
编辑:
当我触发“addToCart”请求时,我也会得到这个日志:
{ MongoError: The field 'items' must be an array but is of type object in
document {_id: ObjectId('5a19ae2884d236048c8c91e2')}
【问题讨论】:
-
item的内容是什么? -
原帖底部的json对象
-
查看更新。
-
你有“item”的模型吗?还是只是一个对象数组。
标签: javascript node.js mongodb express mongoose