【问题标题】:Sequelize belongs to many get both relations in one querySequelize 属于许多在一个查询中获取两个关系
【发布时间】:2015-10-07 11:27:29
【问题描述】:

我已经属于模型 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});

【问题讨论】:

    标签: javascript mysql sequelize.js


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      做一个join:

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

      【讨论】:

      • 我相信它是包含*
      猜你喜欢
      • 2016-07-23
      • 2014-11-06
      • 2014-10-09
      • 1970-01-01
      • 2021-09-05
      • 2015-10-14
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      相关资源
      最近更新 更多