2016-04-24 4 views
0

definiere ich diese Daten (viele zu viele Beziehung):Wie finde ich Daten in Sequelizejs nach Fremdschlüssel?

exports.User = sequelize.define('user', { 
     name: { 
      type: Sequelize.STRING, 
      unique: true, 
     }, 
     email: { 
      type: Sequelize.STRING, 
      unique: true 
     }, 
     password: { 
      type: Sequelize.STRING 
     } 
    }); 


    exports.Project = sequelize.define('project', { 
     name: { 
      type: Sequelize.STRING, 
      unique: true 
     }, 
     description: { 
      type: Sequelize.STRING 
     } 
    }); 

    exports.User.belongsToMany(exports.Project, {as: 'Projects', through: 'user_projects', foreignKey: 'userId'}); 
    exports.Project.belongsToMany(exports.User, {as: 'Users', through: 'user_projects', foreignKey: 'projectId'}); 

Wenn ich einen Benutzer-ID wissen, wie alle Projekte in diesem Benutzer abfragen kann. Was ich jetzt tun:

db.User.findById(userId).then(function (user) { 
     user.getProjects().then(function(projects){ 
      //get 
     }); 
}); 

kann ich Projekte nur von id, nicht zweimal fragen?

Antwort

0

Ich denke, Sie tun können:

var query = { 
    where: {id: userId}, 
    include: [ 
    {model: db.Project, as: 'Projects'} 
    ] 
} 

db.User.findOne(query). 
    then(function (user) { 
    var projects = user.Projects 
    ... 
    }); 
+1

Falls dies nicht klar ist, er eifrig Laden verwendet. Was dies hinter den Kulissen tut, ist JOINS die entsprechenden Tabellen und verarbeitet das Ergebnis in eine verschachtelte Struktur, unter Ausnutzung der Tatsache, dass JS und JSON nicht-tabellarische Daten verarbeiten können – aray12

Verwandte Themen