我在让一个afterBulkCreate挂钩使用承诺时遇到了问题。它被解雇了,但我犯了奇怪的错误。我不知道它是来自于模型,还是来自正在执行的承诺。
在批量创建之后,它应该遍历所有实例并执行一些进一步的承诺。我将它们添加到允诺数组中,直到它们全部完成,并解决主要的承诺。密码还好吗?有人看到错误了吗?
'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;
}发布于 2015-09-09 17:07:15
你需要回报承诺,让钩子等待它。您还可以通过从图片中提取Q和来使代码变得更简单:
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)
})
}
}
});通过对事务数组的映射,您将返回一个新的承诺--其中包含两个承诺--一旦所有这些承诺都得到解决,钩子就完成了。
https://stackoverflow.com/questions/32484274
复制相似问题