2015-12-28 48 views
0

我正在使用Mongoose & Nodejs編寫論壇模塊。在單個查詢中填充嵌入數組屬性的字段

我有一個ForumPost對象的集合,它有一個屬性「comments」,它是一個包含引用屬性「author」的貓鼬模式,它引用了User模型。我無法填充「評論」數組中的每個項目的「作者」屬性。

這裏的ForumPost對象定義:

var ForumPost = db.model("ForumPost", { 

    author: { type: Schema.Types.ObjectId, ref: "User", required: true, default: null, select: true}, 

    comments: [new db.Schema({ 
     author: { type: Schema.Types.ObjectId, ref: "User" }, 
     comment: { type: String, default: ""}, 

    })] 

}); 

當我拉這從數據庫中,我填充論壇的帖子,因爲它是一個基本的填入操作的正常工作的「作者」字段中。

我一直在試圖填充評論陣列的「作者」字段今天上午無濟於事,我的最新嘗試發佈如下。

我用下面的查詢:

ForumPost.findOne({alliance_id: alliance._id, _id: post_id}) 
         .populate("author") 
         .populate({ 
          path: 'comments', 
          populate: { 
           path: 'comments.author', 
           model: 'User' 
          } 
          }) 
         .select("comments") 
         .exec(function(error, post) { 

       return res.json(post); 
      }); 

這是可能來填充這個單一查詢ForumPost的意見數組中的對象的「作者」字段?

+0

http://stackoverflow.com/questions/24358630/populate-ref-nested-in -object-array –

+0

這個答案適用於這個問題意味着(我認爲)我必須拉動ForumPost對象,然後遍歷comments數組中的對象並手動獲取它們。我正在查看是否有可能在相同的查詢中執行此操作。我已經編輯了這個問題,使這個更清晰 –

+0

試試這個http://stackoverflow.com/questions/10568281/mongoose-using-populate-on-an-array-of-objectid 它是可能的,你將不得不註冊評論作爲這個工作的模式。 –

回答

0

因爲你沒有做任何嵌套的人羣,你可以在一個單一的populate調用包括兩條路徑:

ForumPost.findOne({alliance_id: alliance._id, _id: post_id}) 
    .populate('author comments.author') 
    .select('author comments') 
    .exec(function(error, post) { 
     return res.json(post); 
    });