提问者:小点点

Sequelize:查找所有与查询匹配的内容(不区分大小写)


如果我有一个context.data.filename='doc.doc',并且数据库记录包含记录(例如doc.doc和DOC-1.doc),那么它应该返回带有employeeId的两个数据,但是现在它只返回匹配的doc.doc,这是错误的,它还应该返回DOC-1,因为它匹配模式。

伙计们,有什么想法吗? 非常感谢,谢谢。

#代码

  const file = await context.service.Model.findAll({
    where: {
      filename: {
        [Op.like]: `%${context.data.filename}%`,
      },
      employeeId: record.id,
    },
    paranoid: false,
  });

共1个答案

匿名用户

这不是Sequelize的问题。 如果您正在搜索doc.doc并且希望找到doc-1.doc,则需要将%符号放在点前面。 %表示“任意字符的任意数字”。 因此您的搜索查询应该类似于doc%.doc

例如:

const filename = '%' + context.data.filename.replace('.', '%.')  + '%';
const file = await context.service.Model.findAll({
    where: {
      filename: {
        [Op.like]: filename,
      },
      employeeId: record.id,
    },
    paranoid: false,
});