Node.js Sequelize |如果其中任何一个有多个关联与它们的where条件匹配,则返回结果

Node.js Sequelize |如果其中任何一个有多个关联与它们的where条件匹配,则返回结果,node.js,postgresql,sequelize.js,hapijs,Node.js,Postgresql,Sequelize.js,Hapijs,我有A、B和C型号 A与B和C有许多关联(而B和C又与A有一种归属关联) 我想返回A的记录,其中B.B_列='B'或C.C_列='C' 我目前的方法是尝试在where's中使用required:false,但这只返回A的所有记录和关联(如果存在)。我还尝试在关联上使用separate:true,但它似乎仍然带来了比我想要的更多的记录 var results = await A.all({ include: [ { model: B, as: "B

我有ABC型号

ABC有许多关联(而BC又与A有一种归属关联)

我想返回A的记录,其中B.B_列='B'或C.C_列='C'

我目前的方法是尝试在where's中使用required:false,但这只返回A的所有记录和关联(如果存在)。我还尝试在关联上使用separate:true,但它似乎仍然带来了比我想要的更多的记录

var results = await A.all({
      include: [
        { 
          model: B, as: "Bs",
          where: { b_column: "b"},
          separate: true
        },
        { 
          model: C, as: "Cs",
          where: {c_column: "c"},
          separate: true
        },
      ]
    });

您所需要做的就是从根级别进行查询

给你:

A.all({ // <------ I think this should be A not B as per your question
    include: [
        { 
          model: B, as: "Bs"
        },
        { 
          model: C, as: "Cs"
        },
    ],
    where : { 
                $or : [
                    { 'Bs.b_column' : "b" }, // <---- Might have to change table alias name
                    { 'Cs.c_column' : "c" }
                ]
            }
});

A.all({/您需要做的就是从根级别进行查询

给你:

A.all({ // <------ I think this should be A not B as per your question
    include: [
        { 
          model: B, as: "Bs"
        },
        { 
          model: C, as: "Cs"
        },
    ],
    where : { 
                $or : [
                    { 'Bs.b_column' : "b" }, // <---- Might have to change table alias name
                    { 'Cs.c_column' : "c" }
                ]
            }
});

A.all({//太棒了,谢谢!我是一个nOOb,仍然在思考语法以及它是如何转换为SQL的。我唯一要做的评论是它必须是“$Bs.b_column$”,它才能获取它。我发现了吗quickly@ndyr是的,你也可以用这个。太棒了,谢谢你!我是一个书呆子,还在绞尽脑汁研究语法和它是怎样的c关于SQL。我唯一要做的评论是,它必须是“$Bs.b_column$”才能获取它。我发现了吗quickly@ndyr是的,你也可以用那个。