如何返回最后一个push()嵌入文档

时间:2012-01-11 05:47:41

标签: javascript node.js mongodb mongoose

我一直试图弄清楚这是否可行。

使用来自mongoose的博客示例来演示,但是我的实际用例稍微复杂一些:

var Comments = new Schema({
    title     : String
  , body      : String
  , date      : Date
});

var BlogPost = new Schema({
    author    : ObjectId
  , title     : String
  , body      : String
  , date      : Date
  , comments  : [Comments]
});

var BlogPost = mongoose.model('BlogPost');
var post = new BlogPost();

我需要创建一个新评论并将 new 评论返回给客户。将评论作为嵌入式文档对我来说非常方便并且运行良好。但是,每次添加新评论时,我都不想将每条评论都返回给客户。

post.comments.push({ title: 'My comment' });

因为我正在使用mongoose,如果我可以获得新评论的id将有所帮助,并允许我添加其他功能,如编辑评论或删除评论。

唯一的方法是将评论作为自己的集合吗?

1 个答案:

答案 0 :(得分:1)

我想您尝试解决的问题是如何在客户发表评论后更新页面,对吗?

所以,你正在插入一个新评论。这意味着您已拥有其数据。执行插入并将数据返回给客户端。或者,更好的是,返回一个简单的ack,因为客户端也有完整的注释数据并且可以自己呈现它。