2017-08-10 3 views
0

Mit sequelize Transaktion einfügen in zwei Tabellen, Benutzer und Job, jeder Benutzer einen Job hat, ist userId der Fremdschlüssel in Jobtabelle:Sequelize-Transaktion kann nicht wegen Fremdschlüssel einfügen?

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); 
      }); 

Warum? Aus dem Protokoll kann ich die 2 SQL-Anweisung einfügen, aber es wird nicht ausgeführt commit.

Antwort

0

Sie müssen den Auftrag in derselben Transaktion erstellen. Es sieht so aus, als ob Sie die Transaktion für die Job-Erstellung an die falsche Stelle gesetzt haben. Verschieben Sie es wie ich unten sollte Ihr Problem beheben.

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); 
    }); 

Viel Glück :)

Verwandte Themen