猫鼬将新条目添加到 parent
Mongoose adding new entry to parent
我正在使用 express 和 mongoose 构建 REST API。我有以下模式:
var PostSchema= new Schema({
name: String,
_comments: [{ type: Schema.Types.ObjectId, ref: 'Comment'}]
});
var CommentSchema = new Schema({
text: String,
_post: { type: Schema.Types.ObjectId, ref: 'Post'}
});
我想在我的 post 中添加新评论:
/* POST a comment*/
router.post('/', function(req, res, next) {
var comment= new Comment(req.body);
comment.save(function (err, post) {
if (err) {
return next(err);
}
res.json(post);
});
});
它确实使用以下数据保存评论:
{text: "bla", _post: *postId*}
但是,当我检索带有填充评论的 post 时:
/* GET post*/
router.get('/', function(req, res, next) {
Post.find().populate('_comments').exec(function (err, posts) {
if (err) return next(err);
res.json(posts);
});
});
评论数组为空。
所以我想当我向 post 添加新评论时,我还需要将评论 ID 添加到 post.comments 数组并保存吗?有干净的方法吗?
保存 comment
后(在传递给 comment.save
的回调中),用 $addToSet 将其添加到 post._comments
。这样做可以避免重复。
Post.update({ _id: comment._post }, { $addToSet: { _comments: comment._id } }, {}).exec();
我正在使用 express 和 mongoose 构建 REST API。我有以下模式:
var PostSchema= new Schema({
name: String,
_comments: [{ type: Schema.Types.ObjectId, ref: 'Comment'}]
});
var CommentSchema = new Schema({
text: String,
_post: { type: Schema.Types.ObjectId, ref: 'Post'}
});
我想在我的 post 中添加新评论:
/* POST a comment*/
router.post('/', function(req, res, next) {
var comment= new Comment(req.body);
comment.save(function (err, post) {
if (err) {
return next(err);
}
res.json(post);
});
});
它确实使用以下数据保存评论:
{text: "bla", _post: *postId*}
但是,当我检索带有填充评论的 post 时:
/* GET post*/
router.get('/', function(req, res, next) {
Post.find().populate('_comments').exec(function (err, posts) {
if (err) return next(err);
res.json(posts);
});
});
评论数组为空。
所以我想当我向 post 添加新评论时,我还需要将评论 ID 添加到 post.comments 数组并保存吗?有干净的方法吗?
保存 comment
后(在传递给 comment.save
的回调中),用 $addToSet 将其添加到 post._comments
。这样做可以避免重复。
Post.update({ _id: comment._post }, { $addToSet: { _comments: comment._id } }, {}).exec();