Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

Sequelize 的findAndCountAll 中 include 的使用疑问

$
0
0
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 来达到我想要的那个效果?


Viewing all articles
Browse latest Browse all 14821

Trending Articles