乐趣区

Sequelize之指定where查询结果与预期不一致已解决但原因待究

最近在敲 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 下来,以后搞懂了再回来填坑。欢迎路过的大侠指点一二~

退出移动版