Как добавить в массив объекты с Node.js и Mongoose? - PullRequest
0 голосов
/ 20 ноября 2018

Привет, поэтому у меня есть массив объектов, подобный этому:

[
    {
        "_id": "5bf43c42a09e1129b8f0cd4c",
        "user": "5bc89dec5f6e1103f808671b",
        "StudentGrades": [
            {
                "_id": "5bf43daf58f0f803d4e9760b",
                "classCode": "ENG1A0",
                "gradeLevel": 12,
                "credit": 1,
                "mark": 67
            }
        ],
        "__v": 0
    }
]

Используя node.js и mongoose, я хочу добавить еще один объект в массив ученических оценок.Код API, который я сейчас имею, только обновляет массив и не добавляет к нему.Мне было интересно, как правильно добавить еще один объект в массив объектов StudentGrades.

router.put('/:user_id', function(req, res) {
    let id = req.params.user_id;   
    const gradeFields = {
        classCode: req.body.classCode,
        gradeLevel: req.body.gradeLevel,
        credit: req.body.credit,
        mark: req.body.mark
    };
    passport.authenticate('jwt', { session: false }), UserGrades.update({ user: id }, gradeFields, function(err, raw) {
        if (err) {
            res.send(err);
        } else {
            res.send(gradeFields);
        }
    });
});

Я также пытался использовать UserGrades.findOneandUpdate, но это также делало то же самое, это было только редактирование значений в объекте и не добавление к нему другого объекта.Я предполагаю, что я должен выдвинуть значения, но я не уверен, как.Помощь будет оценена

1 Ответ

0 голосов
/ 20 ноября 2018
UserGrades.findOneAndUpdate({ user: id }, { $push: { StudentGrades: gradeFields }}, { new: true }, function(err, raw) {
    if (err) {
        res.send(err);
    } else {
        res.send(gradeFields);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...