【发布时间】:2020-06-14 10:18:51
【问题描述】:
我正在从 MongoDB 服务器中的项目中读取文件名列表,然后检查本地存储中是否存在这些文件名。我正在尝试创建所有匹配文件名的列表,这些文件名同时存在于本地和数据库中,然后在 Express 响应中发送该列表。
这是我想出的。
app.get('/api/album', (req, res) => {
let matches = [];
Album.find({}).then(albums => {
albums.forEach( (item, index) => {
fs.readdir('./static/img/album-art/', (err, files) => {
files.forEach(file => {
if (file !== undefined && item.coverUrl !== undefined) {
if (file == item.coverUrl) {
matches.push(item.name);
}
}
});
});
});
});
res.json(matches);
});
但是,响应只包含一个空列表,因为fs.readdir() 是异步的。我想让它保持异步,但我正试图找到一种在完成后发送响应的方法。我不擅长承诺,我知道我可以在这里使用async/await,但我无法让它发挥作用。
【问题讨论】:
标签: javascript express promise