无法使用Sequelizer for NodeJS为连接表添加where子句

我正在执行以下的地方。 引起我的问​​题的关键逻辑是在#7行,我试图指定一个连接表上的where条件。

models.Portfolio.findAll({ include: [{ model: models.PortfolioPermissions, }], where: models.sequelize.or( {'userId': userId}, {'PortfolioPermissions.userId': userId} ), order: [['startDate', 'DESC']] }) 

您可以看到下面的结果查询在第9行有一个主要问题。 Sequelize正在将我的where子句与投资组合表混为一谈。

 SELECT `portfolios`.*, `sharedUsers`.`id` AS `sharedUsers.id`, `sharedUsers`.`permissions` AS `sharedUsers.permissions`, `sharedUsers`.`userId` AS `sharedUsers.userId`, `sharedUsers`.`portfolioId` AS `sharedUsers.portfolioId` FROM `portfolios` LEFT OUTER JOIN `portfolioPermissions` AS `sharedUsers` ON `portfolios`.`id` = `sharedUsers`.`portfolioId` WHERE (`portfolios`.`userId`=1 OR `portfolios`.`PortfolioPermissions.userId`=1) ORDER BY `startDate` DESC; 

如果有人能在这里指出正确的方向,我真的很感激。 非常感谢。 我使用的Postgres FYI,可能不相关。

join表中的条件应该放在相关的include条目中,而不是放在全局条件下。 在你的情况下,像下面的东西应该工作:

 models.Portfolio.findAll({ include: [{ model: models.PortfolioPermissions, where: {'userId': userId} }], where: models.sequelize.or( {'userId': userId} ), order: [['startDate', 'DESC']] })