【发布时间】:2020-05-01 09:30:10
【问题描述】:
我从前端收到一组项目名称itemsNames。我检查这些项目是否已经在数据库中或是否应该创建新记录。我写了下面的for循环。我希望循环到await,直到每个查询都被执行,然后将每个项目返回到一个列表中,以便稍后进行更多处理。如果我删除 .exec() 方法,查询将返回创建或找到的项目。如何公开创建的项目并使 for 循环等待,直到检查每个注册表?我想拥有已创建或已存在项目的注册表。在以下示例屏幕截图中,所有项目都是新的。
for循环:
let dbList;
for (var i = 0; i < itemsNames.length; i++) {
let itemsNames= itemsNames[i];
dbList+= await Item.findOrCreate({ name: itemsNames}, { name: itemsNames})
.exec( (err, item, wasCreated) => {
if (err) {
throw 'Unavailable';
}
if(wasCreated) {
sails.log('Created a new Item: ' + item.name);
} else {
sails.log('Found the existing Item: ' + item.name);
}
return item;
});
console.log('returned from findOrCreate Items: ' + i + ' ' + dbList);
}
console.log('Loop end');
return dbList;
这是控制台输出:
我使用的是 Sails 1.2.4
【问题讨论】:
标签: javascript for-loop asynchronous async-await sails.js