Sequelize 中实现使用 LIKE 模糊查询数据的方法

在前端开发中,我们经常需要进行数据查询操作,其中模糊查询是一种十分常见的需求。Sequelize 是一个强大的 ORM 框架,它为我们提供了丰富的查询 API,包括模糊查询。本文将会介绍在 Sequelize 中如何使用 LIKE 来实现模糊查询,并提供示例代码。

LIKE 查询语法

在 Sequelize 中,我们可以使用 Sequelize.Op 对象来指定查询运算符,其中 like 表示模糊查询。LIKE 查询通常结合通配符 % 使用,表示任意字符。例如,'%john%' 匹配所有包含 john 的字符串,而 '%doe' 仅匹配以 doe 结尾的字符串,'john%' 仅匹配以 john 开头的字符串。

使用 LIKE 查询数据

假设我们有一个 User 模型,其中有一个 name 字段,我们需要查询所有 name 包含 “john” 的用户记录。可以按照以下步骤来实现:

  1. 导入 Sequelize.Op 对象
const { Op } = require("sequelize");
  1. 执行查询操作
const users = await User.findAll({
  where: {
    name: {
      [Op.like]: "%john%"
    }
  }
});

这里我们使用 findAll 方法执行查询操作,在 where 选项中传入一个具有 Op.like 属性的对象,值为 "%john%",表示查询所有 name 包含 "john" 的用户记录。注意这里的属性名必须使用括号包裹起来,否则会被解析成字符串。

如果我们想查询以 "john" 结尾的用户记录,可以这样写:

const users = await User.findAll({
  where: {
    name: {
      [Op.like]: "%john"
    }
  }
});

如果我们想查询以 "john" 开头的用户记录,可以这样写:

const users = await User.findAll({
  where: {
    name: {
      [Op.like]: "john%"
    }
  }
});

完整示例代码

const { Sequelize, Model, DataTypes } = require("sequelize");

const sequelize = new Sequelize("sqlite::memory:");

class User extends Model {}

User.init({
  name: DataTypes.STRING
}, { sequelize, modelName: "user" });

(async () => {
  await sequelize.sync();

  const users = await User.findAll({
    where: {
      name: {
        [Op.like]: "%john%"
      }
    }
  });

  console.log(users);
})();

总结

使用 Sequelize 实现 LIKE 模糊查询数据,可以帮助我们快速查询符合条件的数据库记录。在实际开发中,我们可以根据需求灵活运用该功能。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65a9c8eeadd4f0e0ff332540


纠错反馈