10

投稿モデルにコメントを埋め込みました。私はmongoosejsを使用しています。投稿に新しいコメントをプッシュした後、新しく追加された埋め込みコメントの ID にアクセスしたいと考えています。入手方法がわかりません。

コードは次のようになります。

var post = Post.findById(postId,function(err,post){

   if(err){console.log(err);self.res.send(500,err)}

   post.comments.push(comment);

   post.save(function(err,story){
       if(err){console.log(err);self.res.send(500,err)}
           self.res.send(comment);
   })


});

上記のコードでは、コメントの ID は返されません。db に作成される _id フィールドがあることに注意してください。

スキーマは次のようになります

var CommentSchema = new Schema({
  ...
})

var PostSchema = new Schema({
    ...
    comments:[CommentSchema],
    ...
});
4

3 に答える 3

1

_idフィールドはクライアント側で生成され、埋め込まれたドキュメントの id を取得できます。comment.id

サンプル

 > var CommentSchema = new Schema({
     text:{type:String}
  })

 > var CommentSchema = new mongoose.Schema({
     text:{type:String}
 })

 > var Story = db.model('story',StorySchema)
 > var Comment = db.model('comment',CommentSchema)
 > s= new Story({title:1111})
   { title: '1111', _id: 5093c6523f0446990e000003, comments: [] }
 > c= new Comment({text:'hi'})
   { text: 'hi', _id: 5093c65e3f0446990e000004 }
 > s.comments.push(c)
 > s.save()

mongo db シェルで確認する

    > db.stories.findOne()
{
    "title" : "1111",
    "_id" : ObjectId("5093c6523f0446990e000003"),
    "comments" : [
        {
            "_id" : ObjectId("5093c65e3f0446990e000004"),
            "text" : "hi"
        }
    ],
    "__v" : 0
}
于 2012-11-02T13:15:14.910 に答える