- 安装 sequelize 和 mysql2
npm install sequelize mysql2
- 对于定义 models 的文件 models/common.js,设置好数据库连接
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize({
database: 'database_name',
username: 'username',
password: 'password',
host: 'host',
dialect: 'mysql',
logging: false,
});
module.exports = sequelize;
- 在对应的 model 文件中,定义一个 scope 方法,用于处理分页查询逻辑
const { Model, DataTypes, Op } = require('sequelize');
const sequelize = require('./common');
class User extends Model {}
User.init({
id: {
type: DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true,
},
name: {
type: DataTypes.STRING,
allowNull: false,
},
age: {
type: DataTypes.INTEGER,
allowNull: false,
},
}, {
sequelize,
modelName: 'user',
scopes: {
paginated: (page = 1, pageSize = 10) => ({
offset: (page - 1) * pageSize,
limit: pageSize,
}),
},
});
module.exports = User;
- 在业务代码中使用 scope 方法
const User = require('./models/user');
// 查询第 2 页,每页 10 条数据
const users = await User.scope('paginated').findAll({
where: {
age: {
[Op.gt]: 20,
},
},
});
这样就可以方便地实现分页查询,调用 scope 方法可以链式调用多个 scope。