Sequelize 是一个基于 Node.js 的 ORM(对象关系映射)框架,它提供了丰富的查询接口来操作数据库。本文将详细介绍 Sequelize 的查询接口使用与参数,帮助读者更好地理解和使用 Sequelize。
查询接口
Sequelize 提供了以下几种查询接口:
- findAll
- findOne
- findOrCreate
- findAndCountAll
- max
- min
- sum
- count
下面将逐一介绍每个接口的使用方法和参数。
findAll
findAll 方法用于查询表中所有符合条件的记录。它的基本语法如下:
-- -------------------- ---- ------- --------------- ------ - -- ---- -- ------ - -- ---- -- ------ -- -------- ---
其中,Model
是 Sequelize 模型,where
是查询条件,order
是排序方式,limit
是查询结果数量限制。下面是一个示例代码:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- ----------------- ---- ----------------- --- ----- ----- - ----- -------------- ------ - ---- - -------- -- - -- ------ - ------- ------- -- ------ -- ---
以上代码查询了 age
大于 18 的前 10 条用户记录,并按照 age
降序排列。
findOne
findOne 方法用于查询符合条件的第一条记录。它的基本语法如下:
Model.findOne({ where: { // 查询条件 }, order: [ // 排序方式 ] });
其中,Model
是 Sequelize 模型,where
是查询条件,order
是排序方式。下面是一个示例代码:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- ----------------- ---- ----------------- --- ----- ---- - ----- -------------- ------ - ----- ---- -- ------ - ------- ------- - ---
以上代码查询了名字为“张三”的用户记录中年龄最大的一条记录。
findOrCreate
findOrCreate 方法用于查询符合条件的记录,如果不存在则创建新记录。它的基本语法如下:
Model.findOrCreate({ where: { // 查询条件 }, defaults: { // 默认值 } });
其中,Model
是 Sequelize 模型,where
是查询条件,defaults
是默认值。下面是一个示例代码:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- ----------------- ---- ----------------- --- ----- ------ -------- - ----- ------------------- ------ - ----- ---- -- --------- - ---- -- - ---
以上代码查询了名字为“张三”的用户记录,如果不存在则创建一个年龄为 20 的新记录。
findAndCountAll
findAndCountAll 方法用于查询符合条件的记录数量和记录列表。它的基本语法如下:
-- -------------------- ---- ------- ----------------------- ------ - -- ---- -- ------ - -- ---- -- ------ -- -------- ---
其中,Model
是 Sequelize 模型,where
是查询条件,order
是排序方式,limit
是查询结果数量限制。下面是一个示例代码:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- ----------------- ---- ----------------- --- ----- - ------ ---- - - ----- ---------------------- ------ - ---- - -------- -- - -- ------ - ------- ------- -- ------ -- ---
以上代码查询了 age
大于 18 的用户记录数量和前 10 条记录,并按照 age
降序排列。
max、min、sum 和 count
max、min、sum 和 count 方法分别用于查询符合条件的记录中某个字段的最大值、最小值、总和和数量。它们的基本语法如下:
-- -------------------- ---- ------- ------------------ - ------ - -- ---- - --- ------------------ - ------ - -- ---- - --- ------------------ - ------ - -- ---- - --- ------------- ------ - -- ---- - ---
其中,Model
是 Sequelize 模型,field
是字段名,where
是查询条件。下面是一个示例代码:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- ----------------- ---- ----------------- --- ----- ------ - ----- --------------- - ------ - ----- ---- - --- ----- ------ - ----- --------------- - ------ - ----- ---- - --- ----- -------- - ----- --------------- - ------ - ----- ---- - --- ----- ----- - ----- ------------ ------ - ---- - -------- -- - - ---
以上代码分别查询了名字为“张三”的用户记录中年龄的最大值、最小值、总和和 age
大于 18 的用户记录数量。
参数
Sequelize 的查询接口中还有许多参数可以使用,这里只介绍一些常用的参数。
where
where 参数用于指定查询条件,它是一个对象,对象的属性名是字段名,属性值是查询条件。下面是一些常用的查询条件:
- [Op.eq]:等于
- [Op.ne]:不等于
- [Op.gt]:大于
- [Op.gte]:大于等于
- [Op.lt]:小于
- [Op.lte]:小于等于
- [Op.between]:在某个区间内
- [Op.notBetween]:不在某个区间内
- [Op.in]:在某个集合内
- [Op.notIn]:不在某个集合内
- [Op.like]:模糊匹配
- [Op.notLike]:不模糊匹配
- [Op.startsWith]:以某个字符串开头
- [Op.endsWith]:以某个字符串结尾
- [Op.substring]:包含某个字符串
下面是一个示例代码:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- ----------------- ---- ----------------- --- ----- ----- - ----- -------------- ------ - --------- - - ----- ---- -- - ---- - -------- -- - - -- -------- - - ----- - ---------- ----- - -- - ----- - ---------- ----- - - - - ---
以上代码查询了名字为“张三”且年龄大于 18,或者名字中包含“王”或“李”的用户记录。
order
order 参数用于指定排序方式,它是一个数组,数组的每个元素是一个数组,第一个元素是字段名,第二个元素是排序方式('ASC' 或 'DESC')。下面是一个示例代码:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- ----------------- ---- ----------------- --- ----- ----- - ----- -------------- ------ - ------- -------- -------- ------ - ---
以上代码查询了所有用户记录,并按照年龄降序排列,年龄相同的用户按照名字升序排列。
limit 和 offset
limit 和 offset 参数用于限制查询结果数量和偏移量,它们分别是一个整数。下面是一个示例代码:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- ----------------- ---- ----------------- --- ----- ----- - ----- -------------- ------ --- ------- -- ---
以上代码查询了从第 21 条用户记录开始的前 10 条记录。
总结
本文介绍了 Sequelize 的查询接口使用与参数,包括 findAll、findOne、findOrCreate、findAndCountAll、max、min、sum 和 count 方法,以及常用的参数。希望读者通过本文的学习和实践,更好地理解和使用 Sequelize,提高前端开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65e66c4d1886fbafa41aa99f