Обновление значений в массиве объектов с помощью mongoose - PullRequest
0 голосов
/ 01 сентября 2018

Это документ из моей коллекции годового бюджета

{
    "_id" : ObjectId("5b8954cf3887ee089b4d7310"),
    "year" : 2018,
    "categories" : [ 
        {
            "_id" : ObjectId("5b8954cf3887ee089b4d7312"),
            "name" : "Logistics",
            "amount" : 1500
        }, 
        {
            "_id" : ObjectId("5b8954cf3887ee089b4d7311"),
            "name" : "Finance",
            "amount" : 23030
        }
    ],
    "__v" : 0
}

Что я хочу сделать, добавить еще один объект в массив категорий. Ниже приведен мой экспресс-запрос на исправление:

app.patch('/annualBudgets/:year' , (req, res) => {
            Budgets.update({year: parseInt(req.body.year)}, {'$set' : {
                'categories.$.name' : req.body.name,
                'categories.$.amount' : req.body.amount
            }}, function(err, docs) {
                if (err) {
                    throw err
                }
                res.send(docs).status(200);
            })
        })

Я передаю следующий запрос

{
		"name" : "Help",
		"Amount": 122312
}

Я не могу понять, что не так с запросом патча. Буду признателен за вашу помощь.

1 Ответ

0 голосов
/ 01 сентября 2018

Вы можете использовать метод $ push, так как вы пытаетесь обновить элемент массива

app.patch('/annualBudgets/:year' , (req, res) => {
            Budgets.update({year: parseInt(req.body.year)}, {'$push' : {categories : {
                name : req.body.name,
                amount : req.body.amount
           }}}, function(err, docs) {
                if (err) {
                    throw err
                }
                res.send(docs).status(200);
            })
        })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...