javascript - 使用 .then() 查询后,Sequelize 无法分配数据

标签 javascript node.js sequelize.js

我有这个功能,但我不能把它放在我的项目变量中。如何将它放在 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/

相关文章:

node.js - Seqeulize PostgreSQL ORM (Node.js) 中的 CHECK 约束

javascript - 需要 Sequelize 模型类时,module.exports undefined,什么是正确的结构?

sequelize.js - 羽毛 Sequelize 不适用于 `` `原始 : false ``` anymore after upgrading to Buzzard

javascript - 用于多个连接的 DRY 解决方案?

javascript - 拉斐尔线图动画和更新图

javascript - 缓存动态加载的图像

javascript - 添加 flaglike 挥舞到 2d 上下文

node.js - Node 应用程序中数据层的 Mongoose 最佳实践

node.js - BelongsToMany 关系 - Sequelize

php - 如何存储多维表单数据?