Sequelize 是一个 Node.js ORM(Object-Relational Mapping)库,用于管理 SQL 数据库中的数据。在使用 Sequelize 进行数据操作时,where
子句是非常常见的操作,本文将详细讲解 Sequelize 如何使用 where
子句。
Sequelize 简介
Sequelize 是一款支持多种 SQL 数据库的 Node.js ORM 库,其完全支持 Promises 和 异步/同步。Sequelize 的主要功能包括:
- 模型定义:定义模型并进行数据库迁移;
- 关系:支持多种关系模式,包括一对一、一对多和多对多;
- 查询:支持多种查询方式,包括原始查询、ORM 查询和传统 SQL 查询;
- 事务:支持事务;
- 日期处理:支持多种日期处理方式;
- 同步:支持同步操作;
- 数据验证:支持数据验证;
- 钩子:支持钩子操作。
where 子句的基本使用
Sequelize 提供了多种方法,可以在查询中使用 where
子句。下面是其中一种简单的使用方式:
Model.findAll({ where: { username: 'username' } });
上面的查询将返回数据库中 username
为 username
的所有结果。
findAll
方法是 Sequelize 中常用的查询方法之一,它返回与查询条件匹配的所有行。这个查询包含了一个 where
子句,其中 "username": "username"
部分表示要查找 Model
中 username
字段为 username
的所有数据。
where 子句的操作符
Sequelize 支持多种操作符,您可以在 where
子句中使用它们。
比较操作符
Sequelize 提供了多种比较操作符,可用于比较几乎所有类型的数据。
$eq
比较操作符:等于;$ne
比较操作符:不等于;$gt
比较操作符:大于;$gte
比较操作符:大于或等于;$lt
比较操作符:小于;$lte
比较操作符:小于或等于;$between
比较操作符:在两个给定值之间;$notBetween
比较操作符:不在两个给定值之间;$in
比较操作符:在一个给定集合中;$notIn
比较操作符:不在一个给定集合中;$like
比较操作符:相似性匹配;$notLike
比较操作符:不相似性匹配;$iLike
比较操作符:相似性匹配(不区分大小写);$notILike
比较操作符:不相似性匹配(不区分大小写);$regexp
比较操作符:正则表达式匹配;$notRegexp
比较操作符:不正则表达式匹配;$iRegexp
比较操作符:正则表达式匹配(不区分大小写);$notIRegexp
比较操作符:不正则表达式匹配(不区分大小写);$glob
比较操作符:通配符匹配;$notGlob
比较操作符:不通配符匹配;$col
比较操作符:列名转接。
下面是一个使用 $gt
和 $lt
的查询示例:
Model.findAll({ where: { age: { $gt: 17, $lt: 30 } } });
上面的查询将返回数据库中 age
字段在 18
到 29
之间的所有结果。
逻辑操作符
Sequelize 中支持多个逻辑操作符,其中包括:
$and
逻辑操作符:要求同时满足多个条件;$or
逻辑操作符:或者满足其中一个条件;$not
逻辑操作符:排除指定条件。
下面是一个使用 $or
的查询示例:
Model.findAll({ where: { $or: [ { age: { $lt: 18 } }, { isDeleted: true } ] } });
上面的查询将返回所有 age
小于 18
或 isDeleted
为 true
的数据。
多个操作符组合
多个操作符可以组合使用,从而满足各种查询需求。下面是一个组合多个操作符的查询示例:
// javascriptcn.com 代码示例 Model.findAll({ where: { age: { $or: [ { $lt: 18 }, { $gt: 30 } ] }, name: { $like: 'Jane%' } } });
上面的查询将返回所有 age
小于 18
或大于 30
,且 name
以 Jane
开头的数据。
总结
在 Sequelize 中使用 where
子句是非常常见的操作,本文介绍了 Sequelize where
子句的基本使用和操作符的详细说明,并提供了几个示例。希望对需要使用 Sequelize 的读者有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/653206147d4982a6eb42b4ed