node.js - 节点路由器无法使用异步等待从 Sequelize 获取数据
问题描述
第一次使用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 代码中的日志语句为我提供了正确的数据,但路由器中的日志语句未定义。
这可能是异步等待问题,但你能帮忙吗?
解决方案
尝试在 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;
})
}
推荐阅读
- sql - Node.js express 和 postgress sql pool.query
- discord - 当用户对消息做出反应时,如何将值存储到变量中?
- c# - 发布版本上的 UWP-APP 应用程序错误
- php - 自定义分类返回 404,仅最后创建分类 200
- c - 断开 ZeroMQ 套接字和 ZMQ_EVENT_DISCONNECTED
- c++ - GDB 对非指针类型变量使用了错误的地址
- angular - 如何编写正确的 yaml 以在 Azure devops 中部署 kubernetes 集群?
- python - 尝试抓取表格时出错
- php - 当前对 apache/php 的设置将始终返回 200 页而不是 404
- java - 如何以编程方式将注释标签添加到字符串