我有一个项目数组,需要将它们创建到数据库。
我需要检查每个插入是否成功,以便将项目 + success = true 作为 json 插入到新数组(结果)中。
如果没有成功创建 - 在(结果)项目 + success = false 之前插入相同的数组。
代码如下:
create_cards: function (filter_id, is_filter, cards) {
var result = [];
var curr_card = null;
for (var card in cards) {
curr_card = this.create( {
filter_id: filter_id,
template: card.template,
state: card.state,
question_id: card.question_id || -1,
answers: card.answers || -1,
description: card.description || -1,
correct_answer: card.correct_answer || -1
}).then(function(card) {
result.push({card: JSON.stringify(card.dataValues), success: true})
},function(err) {
result.push({card: card.dataValues, success: false})
});
}
return results;
}
现在,2 个问题:
循环结束后有'return result',但我得到的是空数组.. 我应该如何批量创建并在每次创建后确保创建成功?
我应该如何在错误函数中获取卡片?我只得到 'err' 作为拒绝函数的变量。
谢谢!
最佳答案
create_cards: function(filter_id, is_filter, cards) {
var result = [];
var promises = cards.map(function(card) {
return this.create({
filter_id: filter_id,
template: card.template,
state: card.state,
question_id: card.question_id || -1,
answers: card.answers || -1,
description: card.description || -1,
correct_answer: card.correct_answer || -1
})
.then(function() {
result.push({
card: card,
success: true
});
})
.catch(function(err) {
result.push({
card: card,
success: false
});
return Promise.resolve();
});
});
return Promise.all(promises)
.then(function() {
return Promise.resolve(result);
});
}
关于javascript - Sequelize - 从数组批量创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38702543/