node express中两个controller之间调用异步问题处理

我在UserController中去调用MusicController
UserController

static async getUserLikeMusic(req, res) {
        let music = new MusicController();
        try {
            const userId = req.userId; // 获取存储在请求对象中的用户 ID
            // 查询用户信息
            const user = await UserModel.findById(userId)
            if (user) {
                const likeMusic = user.like_music;
                let musicInfoList = [];
                // 使用 Promise.all 来并行获取所有音乐信息
                const promises = likeMusic.map(async musicId => {
                    console.log(musicId, "000")
                    try {
                        const musicInfo = await MusicController.getInfoByMusicId(req, musicId);
                        musicInfoList.push(musicInfo);
                    } catch (error) {
                        console.error(`获取音乐信息失败--: ${error.message}`);
                    }
                });

                await Promise.all(promises);
                res.send(musicInfoList);
                return;
            }
            return res.status(404).json({ error: '用户不存在!' });

            return
        } catch (error) {
            res.status(500).json({ error: 'Internal server error' });
        }
    }

MusicController
 

 class MusicController {
    static async getInfoByMusicId(req, musicId) {
        console.log(musicId,"----------")
        try {
            const musicInfo = await MusicModel.findById(musicId);
            console.log(musicInfo)
            if (!musicInfo) {
                throw new Error('音乐不存在!');
            }
            return musicInfo;
        } catch (error) {
            throw new Error(`获取音乐信息失败: ${error.message}`);
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值