Sequelize.js Sequelizejs-搜索多对多关系
如果一个用户有很多项目,反之亦然,我可以使用User.getProjects获取所有用户项目-但是有没有办法搜索此关系,以便您可以翻阅结果并按项目名称进行筛选 谢谢Sequelize.js Sequelizejs-搜索多对多关系,sequelize.js,Sequelize.js,如果一个用户有很多项目,反之亦然,我可以使用User.getProjects获取所有用户项目-但是有没有办法搜索此关系,以便您可以翻阅结果并按项目名称进行筛选 谢谢 答案很简单-遵循与其他查询相同的模型: user1.getContributors({where: {name:'p1'}, offset: 1, limit: 2}).then(function (projects) { console.log('User has '+projects.length+ ' projects
答案很简单-遵循与其他查询相同的模型:
user1.getContributors({where: {name:'p1'}, offset: 1, limit: 2}).then(function (projects) {
console.log('User has '+projects.length+ ' projects');
})
这将生成以下SQL,该SQL将对结果集进行分页并对项目名称进行筛选:
SELECT
`Project` . *
FROM
(SELECT
`Project`.`id`,
`Project`.`name`,
`Project`.`status`,
`Project`.`createdAt`,
`Project`.`updatedAt`,
`ProjectsUser`.`createdAt` AS `ProjectsUser.createdAt`,
`ProjectsUser`.`updatedAt` AS `ProjectsUser.updatedAt`,
`ProjectsUser`.`UserId` AS `ProjectsUser.UserId`,
`ProjectsUser`.`ProjectId` AS `ProjectsUser.ProjectId`
FROM
`Projects` AS `Project`
INNER JOIN `ProjectsUsers` AS `ProjectsUser` ON `Project`.`id` = `ProjectsUser`.`ProjectId`
AND `ProjectsUser`.`UserId` = 1
WHERE
(`Project`.`name` = 'p1')
LIMIT 1 , 2) AS `Project`;
另外,您也可以从另一方面进行同样的操作-例如,查询有用户的项目,并进行适当的筛选:
p2.getContributors({where: {name: 'u1'}}).then(function(users) {
console.log('Project 1 has '+users.length+' user named u1');
});
请提供您的型号信息,例如您的续集。定义“用户”。。。和续集。定义“项目”。。。特别是块。使用一些代码进行更新,创建一个用户,然后创建一个项目,然后将项目添加到用户,然后获取用户项目。问题是,我如何通过页面浏览用户项目,而不是加载整个集合?谢谢。叹气,好的-分页和user1一样简单。getContributors{offset:1,limit:2}啊,过滤和user1一样简单。getContributors{where:{name:'p1'},offset:1,limit:2}-根据项目名称选择项目。*从SELECT project.id,project.name,project.status,project.createdAt,project.updatedAt,…ProjectsUser.ProjectId AS ProjectsUser.ProjectId FROM Projects AS Project内部将ProjectsUser AS ProjectsUser作为ProjectsUser连接到Project.id=ProjectsUser.ProjectId和ProjectsUser.UserId=1,其中Project.name='p1'限制1,2作为项目;有关扩展示例,请参见此处:
p2.getContributors({where: {name: 'u1'}}).then(function(users) {
console.log('Project 1 has '+users.length+' user named u1');
});