2015-10-07 40 views
0

我已經屬於許多模型用戶和項目的關聯。給定用戶ID,查詢以使我們擁有用戶擁有的所有項目以及每個項目的所有用戶,最簡單的方法是什麼?我目前的方法相當複雜,涉及兩個單獨的查詢,然後用Javascript解析。我想我錯過了一些可以簡化整個過程的重要步驟。以下是我希望返回給最終用戶的REST API響應。Sequelize屬於很多在一個查詢中得到兩個關係

{ 
    "user_id": "wru09asf", 
    "projects": [ 
     { 
      "id": "project_id", 
      "content": "Final Year Project", 
      "users": [ 
       { 
        "id": "user_id", 
        "role": "Creator" 
       } 
      ] 
     } 
    ] 
} 

目前我正在做

// first function, get all projects 
User.findById(user_id).then(function(user) { 
    user.getProjects({ 

    }); 
}); 


// second function, get all users of each project returned 

for each project returned, do 
    Project.findById(project_id).then(function(project) { 
     project.getUsers(); 
    }); 

// third function 
Combine the two responses using Javascript to get the final API response. 

Sequelize型號:

//User (all models are underscored named) 
sequelize.define('users', { 
     id: { 
      type: DataTypes.STRING, 
      primaryKey: true 
     }, 
     password: DataTypes.STRING, 
     salt: DataTypes.STRING, 
     email: { 
      type: DataTypes.STRING, 
      unique: true 
     } 
    }); 
// Project 
sequelize.define('projects', { 
     id: { 
      type: DataTypes.STRING, 
      primaryKey: true 
     }, 
     content: DataTypes.TEXT 
    }); 
// UserProject 
sequelize.define('user_project', { 
     role: DataTypes.STRING 
    }); 

關係:

User.belongsToMany(Project, {through: UserProject}); 
Project.belongsToMany(User, {through: UserProject}); 

回答

0

做一個join

User.findAll({ 
    where: { 
    id: user_id 
    }, 
    includes: [Project] 
}).then(function(user) { 

});  
+0

我相信這是包括* – julestruong

0

user.getProjects()

User.findById(1).then(function(user){ 
    user.getProjects().then(function(projects){ 
     console.log(projects); 
    },function(err){ 
     console.log(err); 
    }) 

},function(err){ 
    console.log(err); 
}); 
相關問題