2017-04-09 4 views
2

私はblogappを作っています。コメント自体や配列に格納replycomment IDを介してメインコメントを基準としてmongooseモデル内で参照されている配列を埋め込む方法

var commentSchema = new Schema({ 
      userId: {type: Schema.Types.ObjectId, ref: 'userProfile'}, 
      replyCommentId: [{type: Schema.Types.ObjectId, ref:'Comment'}], 
      commentDesc: String, 
      date: {type: String, default: Date.now()} 
      }); 

私が保存されているの返信:2つのモデルコメントとUSERPROFILEは、コメントが次のようになります。

これらの返信フィールドを設定しようとしました。

commentsModel.findOne({_id: commentId}).populate('replyCommentId') 
.populate('replyCommentId.userProfile').exec(function (err, docs) { 
    cb(err, docs); 
}) 

私はモデルとreplyCommentIdを読み込むことができますがreplycommentIduserProfileは人口取得されていません。

答えて

0

あなたはこのようにそれを試みることができる:あなたがその内部でreplyCommentIdとのuserIdを移入するために2つの移入quesriesを使用する必要がいけない

... 
 

 
const populateQuery = []; 
 
populateQuery.push({ 
 
    path: 'replyCommentId' 
 
}, { 
 
    path: 'replyCommentId', 
 
    populate: { 
 
    path: "userProfile", 
 
    model: "Comment", 
 
    }, 
 
}); 
 

 
fields.commentsModel.findById(commentId) 
 
    .populate(populateQuery) 
 
    .exec((error, docs) => { 
 
    cb(error, docs); 
 
    }); 
 

 
....

+0

それは私のために働いた。私はあなたの論理を得ました。ありがとうございました。私はあなたにアップヴォートを与えることができましたが、私はオーバーフローするために新しいです、そして、私は私の評判を構築しています。 –

+0

あなたが私の答えを受け入れるならば2つの評判を得る;) –

0

。 1つのデータを使用して行うことができます。あなたは、単にこの試すことができ

:マングースの移入とそのオプションの詳細については

commentsModel 
    .findOne({_id: commentId}). 
    .populate({ 
     path : 'replyCommentId', 
     populate : { 
      path :'userId' 
     } 
    }).exec(function (err, docs) { 
     cb(err, docs); 
    }); 

を、Mongoose Populate Documentationを参照してください。 を参照してください。複数のレベルにわたって入力してください

+0

私はこれを試したが、それは働かないuserIdはモデルに取り込まれていない、それはまだ参照されている。 –

+0

編集した回答を試すことができます。これはあなたのために動作します –

関連する問題