2016-02-16 16 views
2

是否有可能使用貓鼬同時填充多個路徑?我試圖做這樣的事情:如何深入填充mongoosejs中的多個路徑?

User.findById(_id) 
    .populate({ 
    path:'friendIds', 
    model:'User', 
    populate: { 
     path: 'reviewIds', 
     model: 'Review', 
     populate: [{ 
     path: 'userId', 
     model: 'User' 
     }, { 
     path: 'locationId', 
     model: 'Location' 
     }] 
    } 
    }) 

如果用戶有朋友誰是用戶,誰寫了評論,其中有一個作者(用戶)和位置。我試圖深入填充所有這些信息。以上是我最近的嘗試,並且不起作用。有沒有辦法做到這一點?

只是作爲參考,如果我不希望人口多路徑呢,它工作正常,像這樣:

User.findById(_id) 
    .populate({ 
    path:'friendIds', 
    model:'User', 
    populate: { 
     path: 'reviewIds', 
     model: 'Review', 
     populate: { 
     path: 'locationId', 
     model: 'Location' 
     } 
    } 
    }) 

但後來我的評論沒有用戶填充它們。

瞭解更多關於深填充mongoose docs

回答

0

是的,它確實有效。我用過很多次。下面是一個例子:

Model.find() 
.populate({ 
    path: 'replies', 
    populate: [{ 
     path: 'user', 
     select: 'displayName username' 
    }, { 
     path: 'replies', 
     populate: { 
     path: 'user', 
     select: 'displayName username' 
     } 
    }] 
}).exec(...