【发布时间】:2014-06-26 21:28:39
【问题描述】:
我有这张桌子。客户有项目,用户在项目中工作
Clients
- id
- name
Projects
- id
- name
- client_id
Users
- id
- name
UserProject
- user_id
- project_id
我尝试返回客户端每个项目的所有用户,例如 id=1 最后的结果,像这样的 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"
}]
}]
如果我找到项目,它工作正常
req.tables.Project.findAll({
where: {
client_id:1
}
}).success(function(projects) {
...
如果我找到一个项目的用户,它就可以正常工作
req.tables.UserProject.findAll({
where: {
project_id:1
},
include: [
{ model: req.tables.User, as: 'User' }
]
}).success(function(UsersProject) {
...
但是,如何结合这两个 finAll 来返回每个项目中的所有用户?类似于下一个代码,但效果很好。我该怎么做? 我发现了这个:Node.js multiple Sequelize raw sql query sub queries 但它对我不起作用或者我不知道如何使用它,因为我有 2 个循环,而不仅仅是一个。我有项目循环和用户循环
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);
});
【问题讨论】:
标签: node.js sequelize.js