Sequelize文档建议您可以使用选项对象上的以下参数来过滤关于连接表属性的查询: [options.include[].through.where]

我试过在下面的代码中使用这个公式,发现过滤不起作用 .

模型用户和模型网络通过连接表网络关联关联,其具有附加属性(布尔)'已确认' . 我似乎无法编写一个只返回与用户关联的已确认网络的查询 .

我的代码摘录如下 .

const network_affiliations = db.define('network_affiliations', {
    networkEmail: { type: Sequelize.STRING },
    confirmed: { type: Sequelize.BOOLEAN }
}, {
    freezeTableName: true,
    defaultScope: {
        where: {
            confirmed: true
        }
    },
});

// User belongs to many Networks and Networks belong to many Users (join table)
User.belongsToMany(Network, { through: network_affiliations });
Network.belongsToMany(User, { through: network_affiliations });

//querying to find one user, including their confirmed networks
User.findOne({
            where: {
                email: req.body.email
            },
            include: [{ model: Network, through: { network_affiliations: { where: { confirmed: true } } } }]
        })

我希望此查询返回一个用户实例及其关联的网络 - 但只有确认的网络:true . 相反,我得到了与用户关联的所有网络(包括已确认:false和确认:未定义) .

正如您在上面的代码中所看到的,我尝试为连接表设置defaultScope({confirmed:true}) . 这似乎也没有做任何事情 .

我还尝试了一个User.findAll查询,该查询在其他方面是相同的,但也不起作用 .

我错过了什么,或者Sequelize只是不在这里工作?

Sequelize版本:“^ 3.30.4”