我在典型的mvc结构中设置服务器。当模型中的函数查询我的数据库时,控制器中的函数要求我等待给定的承诺。如果查询返回一个承诺,为什么我不需要等待它?
//model - why don't I have to make this an async/ await function?
const findUser = (name) => {
const author = User.findOne({
where: {
firstName: name,
},
});
return author;
};
//controller
const getUser = async (ctx) => {
ctx.body = await messages.findUser(ctx.request.body);
};
最佳答案
User.findOne()
立即返回aPromise
。这一承诺立即回到getUser
。是什么在等待。
如果您要在getUser
调用中执行User.findOne()
将解析为的操作,那么您必须在getUser
调用中执行await
。
更简单地说,getUser
是一个错误的变量名。它不代表实际值。相反,它代表着价值的承诺。你可以很快得到价值的承诺。完成它们需要时间。
关于javascript - 为什么没有必要等待数据库查询的返回,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48571905/