2017-08-10 8 views
0

、各ユーザーが1つの仕事を持って、useridはジョブテーブルの外部キーである:外部キーのためにトランザクションを挿入できませんか? 2つのテーブル、ユーザーとジョブに挿入するsequelizeトランザクションを使用して

sequelize.transaction(function(t) { 
       return models.users.create({ 
        userType: 'test', 
        username: 'alvin', 
       }, {transaction: t}).then(function(user) { 
        return models.job.create({ 
         jobType: 'jocker', 
         userId: user.userId // Take away this will work, it is a foreign key 
        }); 
       }, {transaction: t}); 
      }).then(function(result) { 
       resolve(result); 
      }).catch(function(err) { 
       reject(err); 
      }); 

なぜ?ログから2 SQLのINSERTステートメントを見ることができますが、それはcommitを実行しません。

答えて

0

同じトランザクションでジョブを作成する必要があります。仕事の作成のためのトランザクションを間違った場所に置いたようです。私が下で行ったようにそれを動かすことはあなたの問題を解決するはずです。

sequelize 
    .transaction(function(t) { 
    return models.users 
     .create(
     { 
      userType: 'test', 
      username: 'alvin' 
     }, 
     { transaction: t } 
    ) 
     .then(function(user) { 
     return models.job.create(
      { 
      jobType: 'jocker', 
      userId: user.userId 
      }, 
      { 
      transaction: t // <-- Second argument to .create 
      } 
     ); 
     }); 
    }) 
    .then(function(result) { 
    resolve(result); 
    }) 
    .catch(function(err) { 
    reject(err); 
    }); 

幸運:)

関連する問題