介绍
Sequelize 是一个 Node.js ORM(对象关系映射)库,它支持多种数据库,包括 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server 等。Sequelize 的主要功能是将数据库中的数据转换为 JavaScript 对象,以便在 Node.js 应用程序中使用。在本文中,我们将介绍如何使用 Sequelize 实现数据的筛选与排序。
数据筛选
数据筛选是从数据库中选择特定数据的过程。Sequelize 提供了多种方法来实现数据筛选,包括 where、and、or、not、in、like 等。下面我们将分别介绍这些方法的用法。
where
where 方法用于指定筛选条件。它接受一个对象作为参数,该对象的键是表中的列名,值是要匹配的值。例如,我们可以使用 where 方法选择年龄大于 18 岁的用户:
User.findAll({ where: { age: { [Op.gt]: 18 } } });
and
and 方法用于指定多个筛选条件,所有条件必须同时满足。它接受一个数组作为参数,数组中的每个元素都是一个对象,表示一个筛选条件。例如,我们可以使用 and 方法选择年龄在 18 到 30 岁之间且性别为女的用户:
User.findAll({ where: { [Op.and]: [ { age: { [Op.between]: [18, 30] } }, { gender: 'female' } ] } });
or
or 方法用于指定多个筛选条件,其中任意一个条件满足即可。它接受一个数组作为参数,数组中的每个元素都是一个对象,表示一个筛选条件。例如,我们可以使用 or 方法选择年龄小于 18 岁或者性别为女的用户:
User.findAll({ where: { [Op.or]: [ { age: { [Op.lt]: 18 } }, { gender: 'female' } ] } });
not
not 方法用于取反一个筛选条件。它接受一个对象作为参数,该对象的键是表中的列名,值是要排除的值。例如,我们可以使用 not 方法选择年龄不等于 18 岁的用户:
User.findAll({ where: { age: { [Op.not]: 18 } } });
in
in 方法用于指定一个值是否属于一个集合。它接受一个对象作为参数,该对象的键是表中的列名,值是一个数组,表示要匹配的集合。例如,我们可以使用 in 方法选择年龄为 18、20、22 岁的用户:
User.findAll({ where: { age: { [Op.in]: [18, 20, 22] } } });
like
like 方法用于模糊匹配一个字符串。它接受一个对象作为参数,该对象的键是表中的列名,值是一个字符串,表示要匹配的模式。例如,我们可以使用 like 方法选择用户名以 "j" 开头的用户:
User.findAll({ where: { username: { [Op.like]: 'j%' } } });
数据排序
数据排序是将数据库中的数据按照特定顺序排列的过程。Sequelize 提供了多种方法来实现数据排序,包括 asc、desc 等。下面我们将分别介绍这些方法的用法。
asc
asc 方法用于按照升序排列数据。它接受一个字符串作为参数,表示要排序的列名。例如,我们可以使用 asc 方法按照年龄升序排列用户:
User.findAll({ order: [ ['age', 'asc'] ] });
desc
desc 方法用于按照降序排列数据。它接受一个字符串作为参数,表示要排序的列名。例如,我们可以使用 desc 方法按照年龄降序排列用户:
User.findAll({ order: [ ['age', 'desc'] ] });
示例代码
下面是一个完整的示例代码,演示如何使用 Sequelize 实现数据的筛选与排序:
-- -------------------- ---- ------- ----- - ---------- -- - - --------------------- ----- --------- - --- --------------------- ----------- ----------- - -------- -------- ----- ----------- --- ----- ---- - ------------------------ - --------- - ----- ----------------- ---------- ----- -- ---- - ----- ------------------ ---------- ----- -- ------- - ----- ----------------- ---------- ----- - --- ----- -------- ------ - ----- ----------------- -- ---- ----- ------------- --------- -------- ---- --- ------- -------- --- ----- ------------- --------- ------ ---- --- ------- ------ --- ----- ------------- --------- ---------- ---- --- ------- ------ --- -- ---- ----- ----- - ----- -------------- ------ - -------- - - ---- - -------- -- - -- - ------- -------- - - -- ------ - ------- ------- - --- ------------------- - -------
该代码将输出年龄小于 18 岁或者性别为女性的用户,并按照年龄降序排列。输出结果如下:
-- -------------------- ---- ------- - ---- - ----------- - --- -- --------- -------- ---- --- ------- --------- ---------- ------------------------- ---------- ------------------------ -- -------------------- - -- --------- - -- --------- - ------------ ------ -------- ----- ----------------- --- ---- ----- ----------- ------- -- ------------ ----- - -
总结
本文介绍了如何使用 Sequelize 实现数据的筛选与排序。Sequelize 提供了多种方法来实现数据筛选,包括 where、and、or、not、in、like 等,同时也提供了多种方法来实现数据排序,包括 asc、desc 等。这些方法可以帮助我们更加灵活地查询数据库中的数据,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6514e1ea95b1f8cacdd40969