【问题标题】:How to add to an array of objects with Node.js and Mongoose?如何使用 Node.js 和 Mongoose 添加到对象数组?
【发布时间】:2019-04-23 04:49:58
【问题描述】:

嗨,我有一个这样的对象数组:

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

使用 node.js 和 mongoose 我想在 Student Grades 数组中添加另一个对象。我现在拥有的 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,但这也在做同样的事情,它只是编辑对象中的值,而不是附加另一个对象。我猜我必须推动价值观,但我不确定如何。帮助将不胜感激

【问题讨论】:

  • 你在findOneAndUpdate中使用过$push吗?它应该可以工作。

标签: javascript node.js object mongoose


【解决方案1】:
UserGrades.findOneAndUpdate({ user: id }, { $push: { StudentGrades: gradeFields }}, { new: true }, function(err, raw) {
    if (err) {
        res.send(err);
    } else {
        res.send(gradeFields);
    }
});

【讨论】:

    猜你喜欢
    • 2016-10-24
    • 2021-09-01
    • 2019-02-13
    • 2018-07-18
    • 1970-01-01
    • 2018-07-29
    • 2020-10-27
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多