与Sequelize交易不起作用

我想build立一个简单的networking表单,你可以input一个人的名字,姓氏,并为这个人select多个组(但现在是一个)

我正在使用node.js并将其存储在MariaDB数据库中。

Sequelize根据定义的模型创build了表PersonsGroupsGroupsPersons

var Sequelize = require("sequelize"); var sequelize = new Sequelize(config.database, config.username, config.password, config); var Group = sequelize.define("Group", { name: { type: DataTypes.STRING, allowNull: false } } var Person = sequelize.define("Person", { firstName: { type: DataTypes.STRING, allowNull: false }, lastName: { type: DataTypes.STRING, allowNull: false } } Person.belongsToMany(Group, {as: 'Groups'}); Group.belongsToMany(Person, {as: 'Persons'}); 

因为创build这个人并将它分配到一个组中应该是一步一步地自动处理的,所以我决定使用一个事务,在这里的文档中显示: http : //sequelize.readthedocs.org/en/latest/docs/transactions/#using -transactions与-其他- sequelize的方法

 var newPerson = { firstName: 'Hans', lastName: 'Fischer' } var id = 3 // group sequelize.transaction(function (t) { return Person.create(newPerson, {transaction: t}).then(function (person) { return Group.find(id, {transction: t}).then(function(group){ if (!group) throw Error("Group not found for id: " + id); return person.setGroups( [group], {transction: t}); }) }); }).then(function (result) { // Transaction has been committed // result is whatever the result of the promise chain returned to the transaction callback is console.log(result); }).catch(function (err) { // Transaction has been rolled back // err is whatever rejected the promise chain returned to the transaction callback is console.error(err); });` 

但由于某种原因, function (result) {..为成功或catch中的函数被调用。 但是,事务的完整SQL查询除了COMMIT之外都生成了,所以没有任何东西插入到db中。

如果我把它像这样return person.setGroups( [], {transction: t}); 交易成功,但没有插入GroupsPersons当然。

任何想法或build议?

感谢帮助!

{transaction:t}拼写错误,现在就起作用了