friend 们我需要帮助! 我需要在 REST API 中编写获取请求的函数。 在此函数中,我需要按branchId获取所有播放列表,并按playlistId获取每个播放列表文件,并发送具有属性[{playlist, files}、{playlist, files}、{playlist, files}]的对象数组。
我认为我的函数需要异步。 我尝试了一下,但是当我想获取每个播放列表的文件时遇到一些问题。
exports.findBranchePlaylists = async function(req, res) {
let data = [];
let playlists = await Playlist.find({branch_id: req.params.branchId});
playlists.forEach(async (playlist) => {
let files = await File.find({playlistId: playlist._id });
data.push({playlist, files});
})
res.send(playlists);
};
我知道这是错误的代码,我想向你展示我想要做什么。 此代码仅向我发送此 - []。
最佳答案
您的代码的问题是 forEach 循环不支持等待语法(因为 forEach 不是异步的)。您可以将 forEach 更改为经典的 FOR 循环。 我个人会这样做(所以 1 个调用将为我提供所有 id 的数据):
exports.findBranchePlaylists = 异步函数(req, res) {
让数据= [];
让 playlists =等待 Playlist.find({branch_id: req.params.branchId});
let files = wait File.find({'playlistId': {$in: playlists.map( ele => ele._id) });
res.send(文件);
};
关于node.js - 如何实现对数据库的异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57133086/