无法$ push和$使用express js在mongodb中设置数据

时间:2016-07-13 13:09:28

标签: node.js mongodb express mongoose

我有一个场景,我需要在一个数组中替换数据,并在一个查询本身中推送另一个数组中的数据。 在这里,我使用快速js框架和mongoose进行查询。

这是我写的查询:

exports.candidateRating = function(req, res) {
console.log(req.query);
Profiles.update({
    "name": req.query.name
}, {
    $set: {
        "ratings": req.body.ratings,

    }
}, {
    $push: {
        "RoundWiseRatings": req.body.RoundWiseRatings
    }
}, function(error, profiles) {

    if (error) {

    }
    return res.status(200).json(fnStruncturedData(profiless));

});};

我可以设置数据,但无法推送数据。

我不明白我错在哪里。

任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

您的语法错误,您将$ push添加为更新功能的另一个参数,但您确实希望将其添加为第二个参数的另一部分。

这是更新的语法

Model.update(conditions, update, options, callback);

我认为这应该有效:

exports.candidateRating = function(req, res) {
console.log(req.query);
Profiles.update({
    "name": req.query.name
}, {
    $set: {
        "ratings": req.body.ratings,
    },
    $push: {
        "RoundWiseRatings": req.body.RoundWiseRatings
    }    
}, function(error, profiles) {

    if (error) {

    }
    return res.status(200).json(fnStruncturedData(profiless));

});};

您可能还想更新多个文档,这意味着您应该在选项中使用多参数

exports.candidateRating = function(req, res) {
console.log(req.query);
Profiles.update({
    "name": req.query.name
}, {
    $set: {
        "ratings": req.body.ratings,
    },
    $push: {
        "RoundWiseRatings": req.body.RoundWiseRatings
    }    
}, {
    multi: true
}, function(error, profiles) {

    if (error) {

    }
    return res.status(200).json(fnStruncturedData(profiless));

});};