Javascript sequelize.js创建迭代

Javascript sequelize.js创建迭代,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,我在获得一个afterBulkCreatehook来使用承诺时遇到问题。它被解雇了,但我犯了奇怪的错误。我不知道这是来自模型还是正在执行的承诺 在批量创建之后,它应该遍历所有实例并执行一些进一步的承诺。我将它们添加到promise数组中,并等待它们全部完成并解决主promise。代码正确吗?有人看到错误吗 'use strict'; var Q = require('q'); var _ = require('lodash') module.exports = function(seque

我在获得一个
afterBulkCreate
hook来使用承诺时遇到问题。它被解雇了,但我犯了奇怪的错误。我不知道这是来自模型还是正在执行的承诺

在批量创建之后,它应该遍历所有实例并执行一些进一步的承诺。我将它们添加到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;
}

你需要回报承诺,让钩子等待它。您还可以通过从图片中删除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)
        })
      }
    }
  });

通过在事务数组上进行映射,您将返回一个新的承诺(包含两个承诺),一旦所有这些承诺都得到解决,钩子就完成了

您需要返回承诺,钩子才能等待它。您还可以通过从图片中删除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)
        })
      }
    }
  });

通过映射事务数组,您将返回一个新的承诺(包含两个承诺),一旦所有这些承诺都得到解决,钩子就完成了。我使用Q是因为sequelize文档不是很好。像这样的例子真的很有帮助。谢谢你的帮助。我使用Q是因为sequelize文档不是很好。像这样的例子真的很有帮助。谢谢