2016-05-01 10 views
0

ich folgende Modelle haben:Verfahrgeschwindigkeit mehrere Tabellen mit sequelize

accountTable = sequelize.define('Accounts', {}) 

walletTable = sequelize.define('Wallets', { 
'accountId' : { 'type' : Sequelize.BIGINT, 'references' : { model : 'Accounts', 'referenceKey' : 'id'}, allowNull: false }, 
'balance' : { 'type' : Sequelize.DOUBLE} 

connection = sequelize.define('Connections', 
'accountId' : { type : Sequelize.BIGINT(11) , 'references' : { model : 'Accounts', 'referenceKey' : 'id'} }, 
'active' : { type: Sequelize.BOOLEAN } 
}) 

Was ich versuche zu tun, um alle aktiven Verbindungen erhalten, die die gleiche accountId wie in der Mappe haben und sie trennen. Diese

ist, wie ich es in SQL

tue
select c.sessionName, w.balance from Connections as c inner join Wallets w on w.balance = 0 and w.accountId=t.accountId where t.active = 1; 

Ich habe versucht, das gleiche in sequelize mit Beziehungen zu tun, und ich bin nicht in der Lage, es zu erreichen. Ich probierte die Beziehung zwischen den beiden Tabellen, und ich bekomme den Fehler Connection hat keine Beziehung Brieftasche.

Irgendeine Idee, wie man das löst?

viel

+0

ausführen Können Sie uns bitte zeigen, wie Sie tun die Beziehungen modellieren? Weil die Abfrage wirklich davon abhängt, wie die Beziehung zwischen den Tabellen funktioniert –

Antwort

0

Unter der Annahme geschätzt, dass Sie Ihre Beziehungen modelliert als

Accounts.hasOne(Wallets); 
Accounts.hasMany(Connections); 

Wallets.belongsTo(Accounts); 

Connections.belongsTo(Accounts); 

dann sollten Sie in der Lage sein, die Abfrage, wie unten

Connections.findAll({ 
    where: { active: true }, 
    include: [{ 
     model: Accounts, 
     required: true, 
     include: [{ 
      model: Wallets, 
      required: true 
     }] 
    }] 
})