Transactions Sequelize-在事务中插入多个关联实体失败

Transactions Sequelize-在事务中插入多个关联实体失败,transactions,associations,sequelize.js,Transactions,Associations,Sequelize.js,我有两个模型:Status和StatusParameter。状态“hasMany()”状态参数和状态参数“belongsTo()”状态。我想插入一条状态记录,然后插入多个与新状态关联的StatusParameter实体。我还想将所有插入内容包装到事务中。我正在使用Sequelize 2.0.5,所以我想到了以下几点: return sequelize.transaction(function(t) { return Status.create({name: 'abc', value: 1

我有两个模型:Status和StatusParameter。状态“hasMany()”状态参数和状态参数“belongsTo()”状态。我想插入一条状态记录,然后插入多个与新状态关联的StatusParameter实体。我还想将所有插入内容包装到事务中。我正在使用Sequelize 2.0.5,所以我想到了以下几点:

return sequelize.transaction(function(t) {
    return Status.create({name: 'abc', value: 1 }, {transaction: t}).then(function(instance) {
        return sequelize.Promise.all(
            [sequelize.models.StatusParameter.create({statusId:instance.id, name: 'myParamName', value:123}, {transaction: t}),
            sequelize.models.StatusParameter.create({statusId:instance.id, name: 'myOtherParamName', value:345}, {transaction: t})
            ]);
        });
    }).then(function(){
      // Automatically comitted at this point if the promise chain returned to the transaction successfully resolved
      callback();
    }).catch(function(err){
      // Automatically rolledback at this point if the promise chain returned to the transaction was rejected
      callback(err);
    });
执行此代码段将始终进入回滚场景,堆栈跟踪指向方言/mssql/query.js第66行,并显示一条错误消息:无法读取未定义的属性“emit”

我不知道为什么会出现这种情况,我查看了query.js代码,但无法理解为什么在这种情况下promise变量未定义,特别是如果我只插入一个新的StatusParameter实体,那么所有这些都可以正常工作。实际上,当我插入多个关联实体时,就会出现错误

谢谢!
Phil

我尝试了最新的sequelize标记(不是发行版),当时是2.1.0,正如Jan所建议的,它工作得很好,但我只需使用带有{concurrency:1}的Promise.map来代替Promise。所有这些都是因为冗长乏味(我在MS SQL Server DB上)抱怨同时执行两个查询,稍后我们将对此进行研究,看看是否可以同时添加它们并获得一点性能提升。谢谢@jan

Sequelize最近删除了事件发射器支持,但它仍然存在于2.0.5中。你试过重新安装sequelize和dependencies吗?糟糕,我忘了尝试最新的标签。2.1.0,工作正常。我只需要使用带有{concurrency:1}的Promise.map而不是Promise.all,因为Teddous抱怨同时执行两个查询,所以稍后将对此进行研究,看看是否可以同时添加它们,并获得一点性能提升。谢谢@jan!!