首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sequelize.js钩子afterBulkCreate迭代

sequelize.js钩子afterBulkCreate迭代
EN

Stack Overflow用户
提问于 2015-09-09 15:58:20
回答 1查看 855关注 0票数 1

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

在批量创建之后,它应该遍历所有实例并执行一些进一步的承诺。我将它们添加到允诺数组中,直到它们全部完成,并解决主要的承诺。密码还好吗?有人看到错误了吗?

代码语言:javascript
复制
'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;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-09 17:07:15

你需要回报承诺,让钩子等待它。您还可以通过从图片中提取Q和来使代码变得更简单:

代码语言:javascript
复制
  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)
        })
      }
    }
  });

通过对事务数组的映射,您将返回一个新的承诺--其中包含两个承诺--一旦所有这些承诺都得到解决,钩子就完成了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32484274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档