const Sequelize = require('sequelize')
var Person = db.define('person', {
firstName: {type: Sequelize.STRING}
});
var Personmark = db.define('personmark', {
userId: {type: Sequelize.INTEGER}
});
Person.hasMany(Personmark,{constraints: false})
yield Person.findAndCountAll({
include :[{
model: Personmark,
where: {userId : 1},
required: false
}]
})
我这边有两个表,一个Person 表,一个 Personmark表,一个Person 会有 多个 Personmark, 现在我想找出在Personmark有特定userId 的 Person ,想达到的 sql 效果为
SELECT count(1)
from people p, personmarks pm
where p.id = pm.personId
and pm.userId = 1;
参考 api在 findAndCountAll 中使用 include 然后 中间再带个 where 结果的sql 为
SELECT count(`person`.`id`) AS `count` FROM `people` AS `person` LEFT OUTER JOIN `personmarks` AS `personmarks` ON `person`.`id` = `personmarks`.`personId` AND `personmarks`.`userId` = '1';
这两个sql 的结果 完全不同, 符合 Personmark.userId = 1 的数据其实只有一条。 而 findAndCountAll 的结果 是 整个表的数据。
请问 该怎么使用Sequelize 来达到我想要的那个效果?