什么是 Sequelize ORM
Sequelize 是一个基于 Node.js 的 ORM 框架,可以方便地操作关系型数据库。它支持多种数据库平台,包括 PostgreSQL、MySQL、MariaDB、SQLite 和 MSSQL,具有非常强大的模型定义、查询、事务和关联功能。Sequelize 的使用相对于手动编写 SQL 语句更加简单和方便,同时还能保证 SQL 查询操作的安全性和正确性。
查询语句的创建
Sequelize ORM 使用链式调用的方式构建 SQL 查询语句,首先可以使用模型类对象的 findAll
方法来创建查询语句,如下所示:
const models = require('./models'); models.User.findAll();
这个查询语句将会返回一个 Promise 对象,可以通过 then
方法获取查询结果:
models.User.findAll().then(users => { console.log(users); });
其中,findAll
方法可以接受一些选项参数,如 where
、order
、limit
等来限制查询的结果集。
查询条件的设置
Sequelize ORM 提供了两种设置查询条件的方式:
通过对象设置条件
可以通过一个对象来设置查询条件,这个对象的每一个属性都是查询条件的一部分。例如:
models.User.findAll({ where: { age: { [Op.gt]: 18 }, status: 'enabled' } });
上述代码将会查询 User
模型的所有满足 age > 18
且 status = 'enabled'
条件的记录。
通过字符串设置条件
也可以通过字符串的方式来设置查询条件,这种方式比较灵活,可以支持原始 SQL 查询语句中的各种条件操作符。例如:
models.User.findAll({ where: 'age > 18 AND status = "enabled"' });
上述代码将会查询 User
模型的所有满足 age > 18
且 status = 'enabled'
条件的记录。
聚合查询
Sequelize ORM 同样支持各种聚合操作类型,例如 COUNT、SUM、MAX、MIN 和 AVG 等。可以通过 sequelize.fn
方法来表示聚合函数,然后在查询条件中使用这个函数。例如:
models.User.findAll({ attributes: [ [sequelize.fn('COUNT', sequelize.col('id')), 'count'] ] });
上述代码将会查询 User
模型的总记录数,并将结果别名设置为 count
。
排序和分页
Sequelize ORM 还支持通过 order
和 limit
选项来进行结果集的排序和分页操作,这样可以更加方便地对查询结果进行处理。例如:
models.User.findAll({ where: { age: { [Op.gt]: 18 } }, order: [['createdAt', 'DESC']], limit: 10 });
上述代码将会查询 User
模型的所有满足 age > 18
条件的记录,并按照创建时间倒序排序,取出前 10 条记录。
查询结果的处理
查询操作完成后,可以通过 Promise 对象的 then
方法来获取查询结果,这个结果是一个数组,每一个元素都是一个查询记录的对象,其中每个属性都对应一个数据库字段。例如:
-- -------------------- ---- ------- --------------------- ------ - ---- - -------- -- - -- ------ -- ------------- -- - ------------------ -- - ---------------------- ---------- --- ---
上述代码将打印出查询结果中每个记录的 name
和 age
属性值。
总结
Sequelize ORM 可以方便地生成和执行 SQL 查询语句,具有强大的查询、聚合、排序和分页功能,同时还能保证查询操作的安全性和正确性。在实际项目中,建议使用 Sequelize ORM 来处理关系型数据库的操作,以提高效率和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64cf62cab5eee0b5256b632c