在前端开发中,我们经常需要进行数据查询操作,其中模糊查询是一种十分常见的需求。Sequelize 是一个强大的 ORM 框架,它为我们提供了丰富的查询 API,包括模糊查询。本文将会介绍在 Sequelize 中如何使用 LIKE 来实现模糊查询,并提供示例代码。
LIKE 查询语法
在 Sequelize 中,我们可以使用 Sequelize.Op
对象来指定查询运算符,其中 like
表示模糊查询。LIKE 查询通常结合通配符 %
使用,表示任意字符。例如,'%john%'
匹配所有包含 john 的字符串,而 '%doe'
仅匹配以 doe 结尾的字符串,'john%'
仅匹配以 john 开头的字符串。
使用 LIKE 查询数据
假设我们有一个 User
模型,其中有一个 name
字段,我们需要查询所有 name 包含 “john” 的用户记录。可以按照以下步骤来实现:
- 导入
Sequelize.Op
对象
const { Op } = require("sequelize");
- 执行查询操作
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