Mongoose中链式调用populate方法报错问题咨询
Mongoose链式调用populate报错原因及解决办法
问题原因
你在文档实例上调用populate时,该方法返回的是Promise对象,而非支持链式调用的Query对象。当你尝试链式调用.populate()时,相当于在Promise上调用不存在的populate方法,自然会报错this.populate(...).populate is not a function。
而单独调用时,await会等待Promise解析为填充后的文档,所以能正常执行;但链式调用时第一个populate返回的是Promise,没有后续的populate方法可用。
解决办法
有两种简单的方式解决这个问题:
方式一:分两次单独await调用
分别对两个关联字段执行populate,每次await都会更新当前文档实例:
await this.populate({path: 'petGender', select: 'title en'}); await this.populate({path:'type', select: 'title en'});
方式二:单次populate传入多个配置数组
Mongoose的populate支持传入包含多个配置对象的数组,一次完成多个关联字段的填充,效率更高:
await this.populate([ {path: 'petGender', select: 'title en'}, {path:'type', select: 'title en'} ]);
内容的提问来源于stack exchange,提问作者Christoforos
相关产品推荐
相关产品推荐

