我在典型的 MVC 结构中设置我的服务器。 Controller 中的函数要求我等待模型中的函数查询我的数据库时给出的 promise 。如果查询返回一个 promise ,为什么我不需要等待它?
//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()
立即返回一个 Promise
。该 promise 会立即返回给 getUser
。 getUser
是等待的内容。
如果您要对 User.findOne()
在 getUser
调用中解析的内容进行任何操作,然后 您必须在 getUser
中 await
。
更简单地说,author
是一个错误的变量名。它不代表实际值。相反,它代表了一种值(value)的 promise 。您可以快速获得值(value) promise 。实现它们需要时间。
关于javascript - 为什么不需要等待数据库查询的返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48571905/