gpt4 book ai didi

node.js - 为每个 findall Sequelize findall 是可能的吗?

转载 作者:搜寻专家 更新时间:2023-10-31 23:31:44 25 4
gpt4 key购买 nike

我有这张 table 。客户有项目,用户在项目中工作

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

但是,我怎样才能将两个 finAlls 结合起来以返回每个项目中的所有用户?类似于下一个代码,但效果很好。我该怎么做?我发现了这个: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);
});

最佳答案

听起来您已经有了解决方案,但我遇到了同样的问题并提出了这个解决方案。

cvng非常相似说,只是使用嵌套包含。所以使用:

Project.belongsTo(Client);
Project.hasMany(User);
User.hasMany(Project);

然后:

req.tables.Client.find({
where: { id:req.params.id },
include: [{model: req.tables.Project, include : [req.tables.User]}]
}).success(function(clientProjectUsers) {
// Do something with clientProjectUsers.
// Which has the client, its projects, and its users.
});
}

“加载更多嵌套相关模型”的能力通过此处的参数“option.include[].include”进行描述:Sequelize API Reference Model .

也许这对将来的其他人有用。

干杯!

关于node.js - 为每个 findall Sequelize findall 是可能的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24440565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com