【发布时间】:2019-10-14 07:15:51
【问题描述】:
我对 Promises 的概念还很陌生,我正在尝试了解作用域的工作原理。我基本上是在尝试将 then() 内部的值存储到 Promise
之外的变量中下面是我用 Nodejs (Express) 编写的一个简单函数,使用 Sequelize 在 DB 上运行查询。
exports.getTest = (req, res, next) => {
var categories = [];
var names = ['Category 1', 'Category 2', 'Category 3', 'Category 4'];
for (var i = 0; i < names.length; i++) {
model.Category.findOne({
where: {
name: names[i]
},
attributes: ['id']
}).then(id => {
categories.push(
{
category_id: id.id
});
});
}
res.json(categories);
}
在那之后我还有其他逻辑要运行,并且我有一个围绕 Promise 的 for 循环。所以,我不能在 then 中运行我的下一个逻辑,否则我会因为 for 循环而让它运行多次。我需要填充数组 categories 以在我的下一个操作中使用它。
目前,我的回复 (res.json(categories)) 是 []
任何帮助将不胜感激。
PS:我知道这是一个常见的话题,但正如我所提到的,我对此很陌生,其他答案不适合我的情况,让我更加困惑。
提前致谢!
【问题讨论】:
-
你试过使用 async/await 吗?
标签: javascript node.js express promise sequelize.js