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{}编辑的。好的,非常感谢!