Sequelize 是一个 Node.js 的 ORM(Object Relational Mapping)框架,用于操作数据库,能够将 JavaScript 对象和关系型数据库中的表进行映射。Sequelize 提供了许多强大的功能以帮助开发人员便捷的操作数据库。其中,sequelize.fn 和 sequelize.col 函数是 Sequelize 框架中非常重要的两个函数。
sequelize.fn 函数
sequelize.fn 函数是 Sequelize 框架中的一个函数,用于生成 SQL 中的函数部分。它的语法如下:
sequelize.fn(fn, args...)
其中,fn 为 SQL 中的函数名称,args 为该函数的参数列表。
sequelize.fn 函数常用的函数名称有:
- COUNT:返回指定列的行数。
- SUM:返回指定列的总和。
- AVG:返回指定列的平均值。
- MAX:返回指定列的最大值。
- MIN:返回指定列的最小值。
下面是 sequelize.fn 的使用示例:
// www.javascriptcn.com code example
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
// 数据库参数配置
});
const User = sequelize.define('user', {
name: {
type: Sequelize.STRING,
allowNull: false
},
age: {
type: Sequelize.INTEGER,
allowNull: false
}
});
(async () => {
await sequelize.sync({ force: true }); // 强制同步数据库
// 获取年龄大于 30 的用户的数量
const userCount = await User.count({
where: {
age: {
[Sequelize.Op.gt]: 30 // Sequelize 框架中的操作符
}
}
});
// 获取年龄大于 30 的用户的总岁数
const userTotalAge = await User.sum('age', {
where: {
age: {
[Sequelize.Op.gt]: 30
}
}
});
// 获取年龄大于 30 的用户的平均岁数
const userAverageAge = await User.min('age', {
where: {
age: {
[Sequelize.Op.gt]: 30
}
}
});
// 获取年龄最大的用户
const oldestUser = await User.max('age');
})();sequelize.col 函数
sequelize.col 函数是 Sequelize 框架中的一个函数,用于指示查询的列。它的语法如下:
sequelize.col(column)
其中,column 表示要查询的列名称。
sequelize.col 函数常用的情境包括:
- 对查询结果进行排序。
- 对查询结果进行分组。
- 对查询结果进行分页。
下面是 sequelize.col 函数的使用示例:
// www.javascriptcn.com code example
const Sequelize = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
// 数据库参数配置
});
const User = sequelize.define('user', {
name: {
type: Sequelize.STRING,
allowNull: false
},
age: {
type: Sequelize.INTEGER,
allowNull: false
}
});
(async () => {
await sequelize.sync({ force: true }); // 强制同步数据库
// 获取年龄大于 30 的用户的姓名和年龄,并按照年龄降序排序
const users = await User.findAll({
attributes: ['name', 'age'],
where: {
age: {
[Sequelize.Op.gt]: 30
}
},
order: [['age', 'DESC']]
});
// 获取每个年龄段用户的数量
const userAgeCount = await User.findAll({
attributes: [
'age',
[Sequelize.fn('COUNT', sequelize.col('*')), 'count']
],
group: 'age'
});
// 每页显示 10 条数据,获取第二页的用户数据
const usersPerPage = await User.findAll({
offset: 10,
limit: 10
});
})();总结
sequelize.fn 和 sequelize.col 函数是 Sequelize 框架中的两个非常实用的函数。使用这两个函数能够更加方便的进行复杂的查询语句的构建。需要注意的是,在使用 sequelize.fn 函数时,需要先确定好要使用的 SQL 函数名称以及对应的参数列表。在使用 sequelize.col 函数时,需要仔细理解查询数据的需要以及分页、排序、分组等操作的情况,才能使用正确的 SQL 语句进行操作。
Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/64fd7cbe95b1f8cacdcdced1