簡體   English   中英

Sequelize屬於多個在一次查詢中獲得兩種關系

[英]Sequelize belongs to many get both relations in one query

我屬於模型User和Project的許多關聯。 在給定用戶ID的情況下,最簡單的方法是什么,以便我們擁有該用戶擁有的所有項目以及每個項目的所有用戶? 我當前的方法非常復雜,涉及兩個單獨的查詢,然后使用Javascript進行解析。 我認為我缺少一些可以簡化整個過程的重要步驟。 以下是我希望返回給最終用戶的REST API響應。

{
    "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. 

序列化模型:

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

加入

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

});     

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM