Sequelize - 查询模型和相关模型 - 或者

Sequelize - query on model and related model - OR

我是 Sequelize 的新手。我有一个场景,我想从数据库中检索记录,并对所需的模型记录及其相关记录进行筛选。我需要找到用“主”模型上的属性回答查询的记录 回答相关字段查询的记录。

let customers = await db.customers.findAll({
where: {
  location: locationId,
  some_kind_of_string_identifier: someKindOfStringIdentifier

},
include: [
       {
    model: db.users,
    where: db.sequelize.where(
      db.sequelize.fn(
        'concat',
        db.sequelize.col('first_name'),
        ' ',
        db.sequelize.col('last_name'),
      ),
      db.sequelize.Op.like,
      `%${query}%`,
    ),
  },
],

});

所以在上面的示例中,我有一个自由文本搜索查询(查询变量),我想获得所有名称如查询 OR 且具有“someKindOfStringIdentifier”的客户匹配查询。 有办法吗?

我会尝试以下操作:

customers.findAll({
    where: { 
        $and: [{ location: locationId },
               { $or: [{ some_kind_of_string_identifier: someKindOfStringIdentifier },
                       Sequelize.where(
                          Sequelize.fn('concat', 
                          Sequelize.col('$db.users.first_name$'), ' ', Sequelize.col('$db.users.last_name$')),
                          { like: '%' + query + '%' }
                        )] 
               }]
    },
    include: [{
        model: db.users,
        required: false
    }]
}); 

参考:,

现在,您在进行连接时有效地执行了 WHERE。这不是你想要的。您想要 JOIN 两个表(客户和用户),然后将 WHERE 与您的 or 条件一起应用,对吗?

以上代码未经测试,但我相信您必须在 findAll 中应用条件,而不是 include