通过相同的外键将多个连接的查询合并到同一个表中

给定一个像这样的模式:

posts - id - userId postTags - id - postId - type - value 

这是在Sequelize中build立的

 Posts.hasMany(PostTags(sequelize), { as: 'tags', foreignKey: 'postId' }); 

为了进行过滤,我们需要对不同的标签types/值的组合进行dynamic查询。 这是我想要生成的那种SQL:

 select posts.* from posts inner join postTags pt1 on pt1.postId = posts.id and pt1.type = 'language' and pt1.value = 'javascript' inner join postTags pt2 on pt2.postId = posts.id and pt2.type = 'library' and pt2.value = 'Sequelize.js' ... inner join postTags ptN on ptN.postId = posts.id and ptN.type = 'sentiment' and ptN.value = 'happy' where posts.userId = 123; 

随着标签表中的types数量的增加,我们需要连接到同一个表的次数也会随着时间的增加而增加,所以设置多个hasMany关联是不合适的。

有什么办法与Sequelize做到这一点,或者我需要放入原始的SQL?