我在事故中没有添加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?
答案 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);
}
}
);
},