最近在敲Sequelize的时候遇到一个奇怪的问题。
我的代码类似酱紫:
const tagFilter = tag ? { name: tag } : {}
const categoryFilter = category ? { name: category } : {}
await Article.findAndCountAll({
include: [
{ model: Tag, attributes: ['name'], where: tagFilter },
{ model: Category, attributes: ['name'], where: categoryFilter }
],
offset: 0,
limit: 10,
order: [['createdAt', 'DESC']],
row: true,
distinct: true
});
此时我的Article
模型对应的数据库Article
表有12
条数据:
当Tag
模型和Category
模型没有查询条件的时候:
const tagFilter = {}
const categoryFilter = {}
预期结果应该是能得到12
条数据,然而我得到的却是:
纳尼?怎么只有10
条数据???我的柠檬7
和柠檬8
呢!!!
后来发现,愚蠢如我忘记在数据库的Tag
表和Category
表加上柠檬7
和柠檬8
的数据了。待我为这两篇文章都指定好tag和category之后,查出来的结果终于正确了。
然而,为什么?
先mark下来,以后搞懂了再回来填坑。欢迎路过的大侠指点一二~