根据我下面的代码,我希望将变量设置为req.body.update。我无法弄清楚如何实现这一目标。当我将它设置为queryz时,没有任何反应。
我正在使用猫鼬。
app.put('/application/todoupdate/:id/:index', function(req, res, next) {
console.log('accessed put route');
let item = 0;
let queryz = "todos." + item + ".todoText";
console.log(queryz);
User.where({_id: req.params.id}).update({
$set: {
"todos.0.todoText": req.body.update
// queryz: req.body.update
}
}).then(
res.send(req.body.update)
)
});
我的数据库结构是:
{
"_id": {
"$oid": "77777777777"
},
"todos": [
{
"todoText": "req success",
"timestamp": "7777777777777"
},
{
"todoText": "something",
"timestamp": "7777777777777"
}
]
}
我得到的是允许我访问较低级别的内容:
app.put('/application/todoupdate/:id/:timestamp', function(req, res, next) {
console.log('accessed put route');
User.where({_id: req.params.id, "todos.timestamp":
req.params.timestamp}).update({
$set: {
"todos.$.todoText": req.body.update
}
}).then(
res.send(req.body.update)
)
});
答案 0 :(得分:0)
您需要使用positional
运算符来更新嵌套的对象数组
User.update(
{ _id: req.params.id },
{ "$set": { "todos.$.todoText": "hello" } }
)
如果您想更新数组中的所有对象,则可以使用$[]
positional operator
User.update(
{ _id: req.params.id },
{ "$set": { "todos.$[].todoText": "hello" } }
)