我有这个功能,但我不能把它放在我的项目变量中。如何将它放在 item 变量之外?
function getItems(id) {
let item;
sequelize.query("SELECT * FROM table WHERE id = " + id, {type: Sequelize.QueryTypes.SELECT})
.then(myTableRows => {
// item = JSON.stringify(myTableRows);
});
return item;
}
最佳答案
您的 sequelize 查询返回一个 promise ,并且您不能在 promise 内设置项目的值并期望立即响应。如果您希望它以这种方式工作,则需要正确处理 promise ,或使用 async-await。您可以将函数重新配置为如下所示,这将处理该问题:
async function getItems(id) {
let item;
item = await sequelize.query("SELECT * FROM table WHERE id = " + id, {type: Sequelize.QueryTypes.SELECT});
return item;
}
================================================== ==========================
更新:
我不确定您对 node 的经验水平,但 node 的许多方面都会利用 promise。在高层次上,这意味着执行一些操作,然后在完成后做一些事情。使用 sequelize,您正在执行 SQL 查询,一旦获得响应,您现在就可以对这些数据进行处理。
Async-Await 是一种使 Promise 在理解上更直接一些的方法,但行为相同。网上有很多文章可以帮助您更好地理解这些概念。
现在,调用
getItems
的函数也需要是 async-await,或者将其作为 promise 调用以实际获取值。例如:async function test(id) {
let items = await getItems(id);
console.log(items)
}
希望这能消除一些困惑,尽管如果您不清楚 promise 是如何工作的,那么您需要更多地了解它们。希望这会有所帮助。
关于javascript - 使用 .then() 查询后,Sequelize 无法分配数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53599758/