【发布时间】:2021-08-13 19:21:21
【问题描述】:
我对 express JS NodeJS 和 Mongo db 的异步函数有疑问。
我为用户创建了一个 api 调用函数,使用“student id”来查找他们的记录。 我在异步函数查找 user._id 时遇到问题 api 调用会比异步函数返回值更快地显示结果。
Result 将返回未定义的值。
API 路由器代码:
router.get('/user_record/:id', async (req, res) => {
try{
const sid = await getIdByStudentId(req.params.id)
console.log("----- res : " + sid)
res.json({"id": sid})
}catch (err){
console.log("check- 2")
res.json({message: err})
}
})
//Function
function getIdByStudentId(sid){
console.log("input id: " + sid)
const student = User.find({studentid:sid }).exec().then(function (results){
if(results.length > 0) {
const studentId = results[0]._id
console.log("get Id: " + studentId)
return results[0]._id
}else{
return ""
}
})
}
架构
const userSchema = new mongoose.Schema({
studentid:{
type:String,
required: true,
unique: true
},
username:{
type:String,
},
gender:{
type:String,
},
...
createdAt:{
type:Date,
default: Date.now
},
})
API 调用
http://XXXX.com/user_record/4
控制台日志返回
input id: 4 //<-- Log at async function
res : undefined //<--- Log at api call
get Id: 608915308462c0ccec435a97 // <--- Log at async function
【问题讨论】: