Node.js 数据库中保存的作者ID,向前端发送数据时如何获取作者姓名

Node.js 数据库中保存的作者ID,向前端发送数据时如何获取作者姓名,node.js,mongodb,express,Node.js,Mongodb,Express,从数据库发送数据时,如何将用户名转换为这些用户的用户名?我认为使用中间件是可能的,但我不知道怎么做。 这是我的路线 router.get('/recentQuizzes', async (req, res) => { const { skip, limit } = req.query if (skip >= 0 && limit >= 0) { const quizzes = await Quiz.find({})

从数据库发送数据时,如何将用户名转换为这些用户的用户名?我认为使用中间件是可能的,但我不知道怎么做。 这是我的路线

router.get('/recentQuizzes', async (req, res) => {
    const { skip, limit } = req.query
    if (skip >= 0 && limit >= 0) {
        const quizzes = await Quiz.find({})
            .sort({ date: -1 })
            .skip(parseInt(skip))
            .limit(parseInt(limit))
        res.json(quizzes)
    }
})
作者在DB中另存为ObjecdId userID,创建测验需要jwt验证用户,但这些测验可以由其他用户创建。在发送给用户时,我需要将authorID转换为作者名称。我也试过这样的东西

router.get('/recentQuizzes', async (req, res) => {
    const { skip, limit } = req.query
    if (skip >= 0 && limit >= 0) {
        const quizzes = await Quiz.find({})
            .sort({ views: -1 })
            .skip(parseInt(skip))
            .limit(parseInt(limit))
        quizzes.forEach(async item => {
            const { username } = await User.findById(item.author)
            console.log(username)
            item.author = username
        })
        res.json(quizzes)
    }
})

但是我的forEach函数不会将author改写为其用户名,而是console.logs正确的用户名

尝试使用map函数而不是forEach来修改测验并获得新的修改数组

let modifiedQuizzes = await Promise.all(quizzes.map(async (item)=>{
      const { username } = await User.findById(item.author)
      console.log(username)
      item.author = username
      return item;
})

))

好的,它几乎可以工作了,但是当我在quizzes.map内调用console.log(item)时,它是应该的,但是当我在map函数外调用console.log(modifiedQuizzes)时,它是[Promise{}编辑的。好的,非常感谢!