Mongodb POST响应返回0?

时间:2014-05-06 04:34:22

标签: javascript mongodb express

我在事故中没有添加res.json(doc),但我发现当我发出POST请求时,我需要发送一个响应,因为我添加了响应,我得到0或null?

add: function(req, res) {
    //var newPlayer = new models.Team({ _id: req.params.tid }, { players: req.body });
    models.Team.update({ _id: req.params.tid }, { $addToSet: { players: req.body} }, function(err, newPlayer){
            if (err) {
                res.json({error: 'Error.'});
            } else {
                res.json(newPlayer);
            }
    });
},

还尝试使用findOneAndUpdate,但我的POST请求显示0或null为响应。

我正在更新集合中的对象数组,它是嵌套的。这是SCHEMA要明确的。

var Team = new Schema({
    team_name:   { type: String },
    players: [
        {
            player_name:  { type: String },
            points:       { type: Number },
            made_one:     { type: Number },
            made_two:     { type: Number },
            made_three:   { type: Number },
            missed_one:   { type: Number },
            missed_two:   { type: Number },
            missed_three: { type: Number },
            percentage:   { type: Number },
            assists:      { type: Number },
            rebounds:     { type: Number },
            steals:       { type: Number },
            blocks:       { type: Number },
            fouls:        { type: Number },  
            feed:         { type: String },
            facebook_id:  { type: Number }
        }
    ]
});

所以我的问题是,是否有人知道为什么我得到的答案为0?

1 个答案:

答案 0 :(得分:1)

更新方法不会在响应中返回文档。回调参数为(err, numAffected),其中numAffected是"更新"所触及的文档数量。声明,可以做"批量" (或多)处理。

您想要的是findByIdAndUpdate()findOneAndUpdate()。根据您提供的参数,这些方法返回原始文档或修改后的文档。

add: function(req, res) {
    models.Team.findByIdAndUpdate(
        req.params.tid,
        { $addToSet: { players: req.body } },
        function(err, newPlayer){
            if (err) {
                res.json({error: 'Error.'});
            } else {
                res.json(newPlayer);
            }
        }
    );
},