sequelize.js 挂钩 afterBulkCreate 迭代

sequelize.js hook afterBulkCreate iteration

我在使用 promises 使 afterBulkCreate 挂钩工作时遇到问题。它被解雇了,但我得到了奇怪的错误。我不知道它是来自模型还是来自正在执行的承诺。

批量创建后,它应该遍历所有实例并执行一些进一步的承诺。我将它们添加到 promise 数组并等到它们全部完成并解决主要的 promise。代码没问题?有人看到任何错误吗?

'use strict';

var Q = require('q');
var _ = require('lodash')


module.exports = function(sequelize, DataTypes) {
  var Transaction = sequelize.define('transaction', {

    // fields defined

  },{
    hooks: {
      afterBulkCreate: function(transactions, options) {
        console.log('after afterBulkCreate transaction')
        var promiseArray = [];
        _.each(transactions,function(value,index){
           var promiseone = sendOfApromsie(value.id)
          promiseArray.push(promiseone)
          // second promise
          var promisetwo = sendOfApromsie(value.id)
          promiseArray.push(promisetwo)
        })

        Q.all(promiseArray).then(function(){
          sequelize.Promise.resolve()
        })

      }
    }
  });

  return Transaction;
}

您需要 return 挂钩的承诺以等待它。您还可以通过将 q 和 lodash 去掉来使代码更简单:

  var Transaction = sequelize.define('transaction', {

    // fields defined

  },{
    hooks: {
      afterBulkCreate: function(transactions, options) {
        return sequelize.Promise.map(transactions,function(value,index){
          var promiseone = sendOfApromsie(value.id)
          // second promise
          var promisetwo = sendOfApromsie(value.id)
          return sequelize.Promise.join(promiseone, promisetwo)
        })
      }
    }
  });

通过映射交易数组,您 return 一个新的承诺 - 包含两个承诺 - 一旦所有这些都得到解决,挂钩就完成了