javascript - Sequelize.js 钩子(Hook) afterBulkCreate 迭代

标签 javascript node.js sequelize.js

我在使用 Promise 使 afterBulkCreate Hook 正常工作时遇到问题。它被解雇了,但我收到了奇怪的错误。我不知道它是来自模型还是来自正在执行的 promise 。

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

最佳答案

你需要返回钩子(Hook)的 promise 来等待它。您还可以通过去掉 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)
        })
      }
    }
  });

通过映射交易数组,您返回一个新的 promise - 其中包含两个 promise - 一旦所有这些都得到解决, Hook 就完成了

关于javascript - Sequelize.js 钩子(Hook) afterBulkCreate 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32484274/

相关文章:

javascript - 无法在nodejs中循环json对象

mysql - 如何在sequelize中计算同一个表中的多列?

javascript - 识别拉斐尔路径上的点的位置

javascript - 计时器上的按钮图像更改

javascript - Firestore,如何保护用户输入?

javascript - 为什么 `arr.find()` 返回 `undefined` ?

javascript - 类型错误 ('Router.use() requires a middleware function but got a ' + gettype(fn)) FeathersJS

node.js - 什么是 "npm run dev"和 "npm run prod"

javascript - 如何禁用 Sequelize 同步?

javascript - FindAll 内部模型 Hook 'afterFind' 在 nodejs 中使用 sequelize 不起作用