node.js - 将 Sequelize 查询中的数据保存为变量中的纯 JavaScript 对象?
问题描述
我正在编写一个节点 API,并希望将 Sequelize 查询的结果作为块外的纯 JavaScript 对象保存在变量中findAll
。我有一些有用的东西,但没有我想要的那么好。这是我所拥有的:
router.get('/', (req, res, next) => {
models.User.findAll({
attributes: ['id', 'name'],
raw: true
}).then(function (results) {
console.log(results); // Plain JavaScript object, which is good
// Do logic on results
//Return results
res.status(200).json({
results
});
});
});
但我真的不想将我的所有逻辑都保留在then()
块中,特别是因为我可能想在这个之前或之后做一些其他的查询。我真的想要类似的东西(如果这是一件事):
router.get('/', (req, res, next) => {
var users = models.User.findAll({
attributes: ['id', 'name'],
raw: true
}).then(function (results) {
});
});
// Do logic on results
// return results
res.status(200).json({
results
});
});
我试图将 sequelize 查询保存在router.get()
调用下方的函数中,并在结果是 JavaScript 对象时返回结果,但这不起作用。我对 JavaScript 很陌生,所以我很感激你的建议。
解决方案
好吧,如果你不希望你的逻辑代码在then
块中,你不妨使用async-await
:
router.get('/', async (req, res, next) => {
var results = await models.User.findAll({
attributes: ['id', 'name'],
raw: true
});
// you've result variable available here, use it.
// Do logic on results
// return results
res.status(200).json({
results
});
});
现在您不必在then
块中编写代码,您可以results
直接在函数中使用变量。
推荐阅读
- bash - 通过 for 循环在 ssh 连接中转义命令
- angular - “时刻”没有导出成员“默认”
- wikidata - 有没有办法从官方网页查询 Wikidata 以获取公司详细信息?
- angular - 在角度应用程序中绑定到 kendo UI datepicker 控件时未选择日期
- docker - 轮询成功,但出现错误:操作正在进行中 (29)。当 Xdebug 尝试从 docker 容器连接到 PhpStorm
- mysql - Mysql - 如果同一表的其他行中不存在值,则更新行
- android - Android Firebase 远程配置:未设置应用程序名称。调用 Builder#setApplicationName
- sql - 如何使用正则表达式在两个特殊字符之间查找特定字符串?
- python - Django JSONField过滤查询集,其中过滤值是注释的总和值
- php - 子域重定向语言页面