【问题标题】:Node router can't get data from Sequelize using async await节点路由器无法使用异步等待从 Sequelize 获取数据
【发布时间】:2018-11-09 22:17:17
【问题描述】:

第一次使用Sequelize在我的节点路由器中尝试此代码:

router.get('/get-users', async (req, res, next) => {
  const data = await users.getAll()
  console.log('users in router:', data);
  res.send(data)
});

这是sequlize代码:

const users = {
  getAll () {
    sequelize
      .query('SELECT * FROM users', { model: User })
      .then(users => {
        console.log('users in database:', users);
        return users;
      })
  }
};

Sequelize 代码中的日志语句为我提供了正确的数据,但路由器中的日志语句未定义。

这可能是异步等待问题,但您能帮忙吗?

【问题讨论】:

    标签: node.js asynchronous sequelize.js


    【解决方案1】:

    尝试在 getAll() 中返回承诺。 Await 只是 promise 的 then() 调用的包装器,但由于您没有返回 promise,所以 await 不会等待 promise。

      getAll () {
        return sequelize
          .query('SELECT * FROM users', { model: User })
          .then(users => {
            console.log('users in database:', users);
            return users;
        })
      }
    

    【讨论】:

    • 有效!谢谢!是的,我忘记了回报承诺的部分。
    猜你喜欢
    • 2019-07-29
    • 1970-01-01
    • 2019-07-01
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 2018-04-11
    相关资源
    最近更新 更多