node.js - 在express中的每个数组元素中进行猫鼬查询时如何处理异步?
问题描述
在以下发布方法中,由于月光异步,我遇到了一些问题。res.send(suggestions)
先执行然后Expense.findOne.exec
app.post('/suggestions', async function(req, res) {
const suggestions = await req.body.map((description) => {
Expense.findOne({ description: new RegExp(description, 'i') }).exec((err, result) => {
if (result) {
console.log(result.newDescription);
return {
description,
newDescription: result.newDescription,
category: result.category,
subcategory: result.subcategory
};
}
});
});
res.send(suggestions);
});
结果是一个空值数组。如何为每个项目执行查询,然后执行res.send(suggestion)
?
解决方案
使用以下代码找到解决方案:
app.post('/suggestions', async function(req, res) {
try {
if (req.body.length > 0) {
const suggestions = req.body.map((description) =>
Expense.findOne({ description: new RegExp(description, 'i') })
);
const results = await Promise.all(suggestions);
return res.send(results);
}
} catch (e) {
console.log('error', e);
}
});
推荐阅读
- java - 如何检查二维数组是否为拉丁文
- vba - 无法使用 VBA 在 Solver 中设置整数约束
- r - 将 xts 转换为 tibble 的最佳方法是什么
- java - HTML 内容损坏
- apache-kafka - 为什么 Apache Kafka 不支持临时主题?
- javascript - Javascript querySelector 获取值条件
- php - Laravel Route::current() 返回 null
- perl - Perl 语法(替换 'defined(@array')
- javascript - 使用 javascript、PHP、MySQl 上传多张图片
- grafana - Grafana :与去年一周的同一天比较