Mongoose查询时同一路径下如何populate多个关联字段?
解决方案
你原先的写法两次调用populate指定同一个根路径games,Mongoose会默认用后一次的populate配置覆盖前一次的,所以只有reactions.player的关联生效,players.player的关联被覆盖。
要解决这个问题,只需要将同一games路径下的多个嵌套关联规则合并为数组配置即可,修改后的代码如下:
async function getOne(id) { let tournament = await Tournament.findById(id) .populate({ path: 'games', // 同一路径下多个嵌套populate规则放在数组中,可同时生效不覆盖 populate: [ { path:'players.player', select: ['username', 'avatar'] }, { path: 'reactions.player', select: ['username', 'avatar'] } ] }) .exec(); return tournament; }
修改后就能同时返回players.player和reactions.player关联的用户名、头像信息,完全匹配你的预期返回结果。
内容的提问来源于stack exchange,提问作者dosbenzos
相关产品推荐
相关产品推荐

