router.route('/')
.post((req, res) => {
Circle.findOne({title: req.params.circle_title}, (err, circle) => {
if (err) {
return res.send(err)
}
circle.posts.push({
authorId: req.body.authorId,
body: req.body.body
})
circle.save((err, savedCircle) => {
if (err) {
return res.send(err)
}
res.json(savedCircle.posts[savedCircle.posts.length-1]) // FIXME
})
})
})
在上面的代码中,我想知道是否有更好的方法可以返回刚刚保存的post
,这是circle
的子文档。
答案 0 :(得分:0)
您可以尝试以下操作:
保存后,您需要找到一个并填充:
circle.save((err, savedCircle) {
if (err) {
return res.send(err)
}
Circle.findOne(savedCircle).populate('post.Ref_Id').exec(function(err, results) {
console.log(results);
});
res.json(results);
})
}
<小时/> 即使您可以直接对结果/保存的文档进行操作。
savedCircle.populate('post.Ref_Id').exec(function(err, results) {
console.log(results);
});
<小时/> 最好的方法是引用最近推送的对象。 e.g:
circle.posts.push({
authorId: req.body.authorId,
body: req.body.body
});
latestSavedcirclePost = circle.posts[0]; //Here you will get _id ref as well
<小时/> 您可以尝试使用create方法,而不是将它们推送/添加到数组中,例如:
var latestSavedcirclePost = circle.post.create({
authorId: req.body.authorId,
body: req.body.body
});