我正在编写一个 Node API,并希望将 Sequelize 查询的结果保存在变量中,作为 findAll
block 外部的纯 JavaScript 对象。我有一些有用的东西,但没有我想要的那么好。这是我所拥有的:
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()
block 中,特别是因为我可能想在此查询之前或之后执行一些其他查询。我真的想要类似的东西(如果这是一件事):
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
block 中,您不妨使用 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
block 中编写代码,您可以直接在函数中使用变量 results
。
关于node.js - 将 Sequelize 查询中的数据保存为变量中的纯 JavaScript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51691036/