javascript - Sequelize - 从数组批量创建

标签 javascript node.js express promise sequelize.js

我有一个项目数组,需要将它们创建到数据库。

我需要检查每个插入是否成功,以便将项目 + 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 个问题:

  1. 循环结束后有'return result',但我得到的是空数组.. 我应该如何批量创建并在每次创建后确保创建成功?

  2. 我应该如何在错误函数中获取卡片?我只得到 '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/

相关文章:

arrays - Node js,for循环奇怪的情况

node.js - 在 Windows 中删除 npm-cache 文件夹是否安全?

angularjs - mean.js 菜单 isPublic 不起作用

使用nodeJS进行AJAX调用并表示成功,但不显示数据

node.js - 在 Express 中保持可靠的 session

javascript - 将点击处理程序添加到要添加到 dom 的元素的最快方法

javascript - 如何在输入中放置响应 angularjs

javascript - 如何在页面加载时生成对页面特定部分的点击?

php - 如何在一周中的特定一天显示特定网页

javascript - 我是否需要将 null 作为参数传递给 Javascript 函数/方法中的可选参数?