我在使用 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/