Sequelize.js Sequelizejs-搜索多对多关系

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

如果一个用户有很多项目,反之亦然,我可以使用User.getProjects获取所有用户项目-但是有没有办法搜索此关系,以便您可以翻阅结果并按项目名称进行筛选

谢谢


答案很简单-遵循与其他查询相同的模型:

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