Sequelize findall für jeden findall möglich ist?

Habe ich diese Tabellen. Kunden haben Projekte und Benutzer arbeiten in Projekten

Clients
- id
- name

Projects
- id
- name
- client_id

Users
- id
- name

UserProject
- user_id
- project_id

Ich versuche, um alle Benutzer, die jedes Projekt des Kunden für Beispiel id=1
Schließlich, so etwas wie dieses JSON:

[{
   id:1
   name:"Project1"
   users:[{
            id:23
            name:"Robert Stark"
          },{
            id:67
            name: "John Snow"
          }]
 }, {
   id:2
   name:"Project2"
   users:[{
            id:1
            name:"Aria Stark"
          }]
}]

Wenn ich Projekte finden, es funktioniert gut

req.tables.Project.findAll({
    where: {
        client_id:1
    }
 }).success(function(projects) {
          ...

Wenn ich die Benutzer von ein Projekt funktioniert es einwandfrei

req.tables.UserProject.findAll({
   where: {
       project_id:1
   },
   include: [
       { model: req.tables.User, as: 'User' }
   ]
}).success(function(UsersProject) {
     ...

Aber, wie kann ich beides miteinander verbinden, finAlls, um alle Benutzer in jedem Projekt? So etwas wie der nächste code, aber das funktioniert gut. Wie kann ich es tun?
Ich fand diese: Node.js mehrere Sequelize raw-sql-Abfragen sub-queries aber Es funktioniert nicht für mich oder ich nicht weiß, wie es zu benutzen, weil ich 2 loops nicht nur eine. Ich habe Projekte Schleife und Benutzer-Schleife

req.tables.Project.findAll({
    where: {
        client_id:1
    }
}).success(function(projects) {

    var ret_projects=[];

    projects.forEach(function (project) {

         var ret_project={
             id:project.id,
             name:project.name,
             data:project.created,
             users:[]
         });

         req.tables.UserProject.findAll({
             where: {
                 project_id:project.id
             },
             include: [
                 { model: req.tables.User, as: 'User' }
             ]
         }).success(function(UsersProject) {

             var ret_users=[];

             UsersProject.forEach(function (UserProject) {
                 ret_users.push({
                     id:UserProject.user.id,
                     name:UserProject.user.name,
                     email:UserProject.user.email
                  });
             });
             ret_project.users=ret_users;
             ret_project.push(ret_project)
         });
     });

     res.json(projects);
});

InformationsquelleAutor David | 2014-06-26

Schreibe einen Kommentar