javascript - Sequelize 属于在一个查询中同时获取两种关系的多类

标签 javascript mysql sequelize.js

我属于模型用户和项目的许多关联。最简单的方法是什么,给定一个用户 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. 

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

最佳答案

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

关于javascript - Sequelize 属于在一个查询中同时获取两种关系的多类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32990988/

相关文章:

javascript - Knockout.js + Bootstrap - 奇怪的事情发生

mysql - SQL select 语句内连接

php - 多重选择不将选定的选项插入数据库

MySQL子查询不工作

javascript - 如何在生成 index.js 时修复 sequelize 连接问题?

javascript - 如何在 Sequelize.js + Postgres.js 中给出主键和外键关系

javascript - 异步函数的返回语义是什么?

javascript - 浏览器重新加载时 Angular 4 重定向到根路径

javascript - Backbone Marionette 相关模型

node.js - 在 sequelize 中搜索 (column1 + column2 +column3) <= column4