Основываясь на приведенном ниже коде, я хочу установить переменную для req.body.update. Я не могу понять, как этого добиться. Когда я устанавливаю его на queryz, ничего не происходит.
Я использую для этого мангуста.
app.put('/application/todoupdate/:id/:index', function(req, res, next) {
console.info('accessed put route');
let item = 0;
let queryz = "todos." + item + ".todoText";
console.info(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.info('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)
)
});



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Для обновления вложенного массива объектов необходимо использовать оператор positional.
User.update(
{ _id: req.params.id },
{ "$set": { "todos.$.todoText": "hello" } }
)
и если вы хотите обновить все объекты в массиве, вы можете использовать $[] позиционный оператор
User.update(
{ _id: req.params.id },
{ "$set": { "todos.$[].todoText": "hello" } }
)
Ты получил меня как 90% пути, спасибо, чувак!
Итак, как мне поместить в это переменную? У меня нет проблем с конкретным указанием того, что я хочу обновить, но если я передаю индекс, как я сделал в параметрах, как мне разместить это как позицию.