所以我有这个字符串数组,我用它作为过滤器,用Mongoose从MongoDB获取文档。我成功地从数据库中获取了数据,但它也在控制台上返回了Promise { <pending> }
,即使我用Promise.all
Package 了map函数。
请注意,这个map函数嵌套在两个深度为for in
的循环中,为了简单起见,我省略了这个循环。
假设这是一个字符串数组:
const subCategories = [ 'Politics', 'Entertainment' ];
这就是map函数:
const subCategoryID = await Promise.all( subCategories.map( async item => {
try {
const data = await SubCategory.findOne( { subCategory: item } );
return data;
} catch( e ) {
throw err;
}
}));
console.log( subCategoryID );
承诺让我头晕。在过去的1-2年里,我已经尝试学习Promises超过5-6次,它仍然让我感到困惑。所以如果可以的话,请提供一个使用Async/Await的解决方案。
1条答案
按热度按时间dz6r00yl1#
如果你只对结果感兴趣,试试这种方法:
使用
$or
操作符在mongodb手册中解释:$or
运算符对两个或多个<expressions>
的数组执行逻辑OR运算,并选择至少满足<expressions>
之一的文档。更多关于它在这里。
在mongoose中,你可以在任何
find
方法中使用它。你的承诺的解释抱歉我帮不上忙
如果这能解决您的问题,请标记为已回答。