在使用 Sequelize 进行 Node.js 后端开发时,我们经常需要使用到 Sequelize 的 findAll() 方法。该方法可用于从数据库中查询符合特定条件的所有数据。下面,我们就来详细学习一下 Sequelize 的 findAll() 方法。
方法概述
Sequelize 的 findAll() 方法用于查询符合特定条件的所有数据。该方法会返回一个包含查询结果的数组。
具体来说,我们可以使用该方法对数据库中的数据进行以下两种查询:
- 正常查询:查询符合指定条件的所有数据。
- 排序查询:查询符合指定条件的所有数据,并按照指定的排序规则进行排序。
使用方法
下面,我们就来看看使用 Sequelize 的 findAll() 方法进行数据查询的具体方法。
1. 执行正常查询
执行正常查询时,我们需要使用以下语法:
const userList = await User.findAll({
where: {
// 筛选条件
}
});其中,User 表示我们要查询的数据表名,userList 则表示查询结果的数组。
在 where 属性中,我们可以使用各种条件对查询结果进行筛选。例如:
const userList = await User.findAll({
where: {
name: 'Tom',
age: {
[Op.gt]: 18
}
}
});上述代码中,我们通过 where 属性将 name 字段设置为 'Tom',并将 age 字段设置为大于 18。
2. 执行排序查询
执行排序查询时,我们需要使用以下语法:
const userList = await User.findAll({
where: {
// 筛选条件
},
order: [['age', 'DESC'], ['id', 'ASC']]
});其中,order 属性表示我们要使用的排序规则。在 order 属性中,我们可以使用多个数组来表示多级排序规则。例如,上述代码中使用了两个数组表示两级排序规则:首先按照 age 字段进行降序排序,然后按照 id 字段进行升序排序。
示例代码
下面,我们来看看一个完整的 Sequelize findAll() 方法的示例代码:
// www.javascriptcn.com code example
const Sequelize = require('sequelize');
const Op = Sequelize.Op;
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql',
});
const User = sequelize.define('user', {
name: Sequelize.STRING,
age: Sequelize.INTEGER
});
(async () => {
await sequelize.sync({ force: true });
await User.bulkCreate([
{ name: 'Tom', age: 25 },
{ name: 'Jack', age: 18 },
{ name: 'Mary', age: 30 },
]);
const userList = await User.findAll({
where: {
age: {
[Op.gt]: 18,
[Op.lt]: 30
}
},
order: [['age', 'DESC'], ['id', 'ASC']]
});
console.log(userList);
})();上述代码中,我们首先使用 Sequelize 定义了一个叫做 User 的数据表,然后使用 bulkCreate() 方法向该表中添加了三条数据。
接着,我们使用 findAll() 方法查询 age 大于 18 小于 30 的记录,并按照 age 降序、id 升序的规则进行排序。最后,我们使用 console.log() 打印查询结果。
结语
通过本篇文章的学习,相信大家已经掌握了 Sequelize 的 findAll() 方法的常用使用方法,以及如何对查询结果进行排序。在实际应用中,我们可以根据具体需求来制定不同的查询条件和排序规则,以满足应用的多样化需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d6c109a941bf7134c9eb81