📅  最后修改于: 2023-12-03 15:20:06.032000             🧑  作者: Mango
Sequelize 是一款基于 Node.js 的 ORM(对象关系映射)库,用于与不同类型的 SQL 数据库交互。它提供了一种简单、直观的方式来执行数据库操作,并且自带一些有效的关联和事务处理机制。本文将详细介绍 Sequelize 如何从 Model 中读取数据。
要读取单条记录,可以使用以下的代码来查询数据库中的数据:
Model.findOne({ where: { id: 1 } }).then((data) => {
console.log(data);
});
上述代码会在 Model 中查找一行 ID 为 1 的记录,并将查询结果打印到控制台上。在调用 findOne()
方法时,我们需要提供一个 where
对象,其中包含一个查询条件表达式。
要读取多条记录,可以使用以下的代码来查询数据库中的数据:
Model.findAll({ where: { status: 'active' } }).then((data) => {
console.log(data);
});
上述代码会在 Model 中查找所有处于 'active' 状态的记录,并将查询结果打印到控制台上。与 findOne()
方法类似,调用 findAll()
方法时也需要提供 where
对象,不同的是,findAll()
方法返回多条记录的数组。
如果想要只查询 Model 中的特定字段,可以使用以下的代码来查询数据库中的数据:
Model.findAll({ attributes: ['id', 'name'] }).then((data) => {
console.log(data);
});
上述代码会在 Model 中查找所有记录的 ID 和 Name 字段,并将查询结果打印到控制台上。调用 findAll()
方法时,只需要在 attributes
属性中指定要查询的字段即可。
如果要对查询结果进行分页,可以使用以下的代码来查询数据库中的数据:
const pageSize = 10; // 每页显示记录数
const currentPage = 1; // 当前页码
Model.findAll({
limit: pageSize, // 每页显示记录数
offset: (currentPage - 1) * pageSize, // 从第几条记录开始显示
order: [['createdAt', 'DESC']], // 按创建时间降序排列
}).then((data) => {
console.log(data);
});
上述代码会在 Model 中查询第一页(每页显示 10 条记录)的数据,并按创建时间降序排列。在调用 findAll()
方法时,我们需要提供一个 offset
对象,其中包含起始偏移量和显示记录数。
在 Sequilize 中,我们可以使用简单、直观的方式来执行数据库操作,并且不需要编写复杂的 SQL 语句。上述的代码片段将演示了从 Model 中读取单条记录、多条记录、特定字段和分页数据的方法。