Fastify 是一个高度性能、低开销的 Node.js Web 框架,它的特点是快速极简并且容易学习使用,目前被广泛应用于后端 API 的开发中。而 Sequelize 是一个 Node.js 中非常流行的 ORM (对象关系映射)框架,它提供了简单易用的 API 以便开发者更加便捷地操作各种数据库。
在本篇文章中,我们将为大家介绍如何在 Fastify 框架中使用 Sequelize ORM 框架,包括详细的学习指南和示例代码。
安装配置
在开始使用 Sequelize 前,我们需要先将其安装到项目中,在命令行中使用以下命令:
npm install --save sequelize
安装成功后,在项目中新建一个 Sequelize.js 文件,并进行配置:
// www.javascriptcn.com code example
const Sequelize = require('sequelize');
const sequelize = new Sequelize({
dialect: 'mysql', // 选择方言类型
host: 'localhost', // 数据库地址
port: 3306, // 数据库端口号
database: 'database_name', // 数据库名称
username: 'username', // 数据库用户名
password: 'password', // 数据库密码
});
module.exports = sequelize;在以上代码中,我们先将 Sequelize 模块引入进来,然后通过 new Sequelize() 创建一个 Sequelize 实例。其中,我们需要指定数据库的类型、地址、端口号、数据库名称以及账号和密码。
定义数据模型
在 Fastify 中使用 Sequelize,我们需要先定义模型对象。模型对象就是数据库表格和 Sequelize ORM 的中间件,我们可以通过模型对象来进行数据库表格的增删改查操作。
在 Sequelize 中,我们可以使用 define() 方法对模型对象进行定义。接下来的代码是一个简单的模型对象定义实例:
// www.javascriptcn.com code example
const sequelize = require('./Sequelize'); // 引入 Sequelize 实例
const { DataTypes } = require('sequelize'); // 引入 sequelize 中定义数据类型的模块
const User = sequelize.define('User', {
id: {
type: DataTypes.INTEGER, // 指定数据类型为整型
autoIncrement: true, // 开启自增
primaryKey: true, // 将该字段设为主键
allowNull: false, // 不允许为空
},
username: {
type: DataTypes.STRING(20), // 指定数据类型为字符串(最大长度为 20)
allowNull: false, // 不允许为空
},
age: {
type: DataTypes.INTEGER.UNSIGNED, // 指定数据类型为无符号整型
},
isAdult: {
type: DataTypes.BOOLEAN, // 指定数据类型为布尔类型
defaultValue: true, // 设置默认值为 true
}
});
module.exports = User;在以上代码中,我们使用 sequelize.define() 方法来定义了一个叫做 User 的数据类型。对于 User 这个数据类型,我们定义了四个字段,分别是 id、username、age 和 isAdult。
操作数据表格
既然我们已经定义了数据表格,那么我们就可以通过操作该数据表格来进行增删改查等操作了。
1. 添加数据
在 Sequelize 中,我们可以通过 create() 方法来添加数据。
// www.javascriptcn.com code example
const User = require('./User'); // 引入 User 模型对象
async function addUser() {
const user = await User.create({
username: 'Amos',
age: 28,
isAdult: true,
});
console.log(user.toJSON()); // 将添加的数据输出为 JSON 格式
}
addUser();在以上代码中,我们使用 User.create() 方法来创建一条新的数据,该数据包含 username、age 和 isAdult 字段。
2. 查询数据
对于查询数据操作,我们可以使用 findAll()、findOne()、findByPk() 等方法进行操作,例如:
// www.javascriptcn.com code example
const User = require('./User'); // 引入 User 模型对象
async function getUser() {
// 查询所有数据
const allUsers = await User.findAll();
console.log(allUsers.map(user => user.toJSON()));
// 根据条件查询一条数据
const amos = await User.findOne({
where: {
username: 'Amos',
age: 28,
},
});
console.log(amos.toJSON());
// 根据主键查询一条数据
const userById = await User.findByPk(1);
console.log(userById.toJSON());
}
getUser();在以上代码中,我们分别使用了 findAll()、findOne() 和 findByPk() 方法查询数据库中的数据。
3. 更新数据
对于更新数据操作,我们可以通过 update() 方法实现。例如,我们可以将 User 表格中所有年龄大于 30 岁的人的 isAdult 属性设置为 false:
// www.javascriptcn.com code example
const User = require('./User'); // 引入 User 模型对象
async function updateUser() {
const result = await User.update(
{ isAdult: false },
{
where: {
age: {
[Op.gt]: 30, // 针对大于 30 的年龄
}
},
},
);
console.log(result); // 输出更新的结果
}
updateUser();在以上代码中,我们使用 User.update() 方法来更新数据表格。
4. 删除数据
对于删除数据操作,我们可以使用 destroy() 方法实现。例如,我们可以通过如下代码来删除一个年龄大于 30 的用户:
// www.javascriptcn.com code example
const User = require('./User'); // 引入 User 模型对象
async function deleteUser() {
const result = await User.destroy({
where: {
age: {
[Op.gt]: 30, // 针对大于 30 的年龄
},
},
});
console.log(result); // 输出删除的结果
}
deleteUser();在以上代码中,我们使用 User.destroy() 方法来删除数据表格中所有年龄大于 30 的用户。
结语
在本篇文章中,我们向大家介绍了如何在 Fastify 中使用 Sequelize 这一 ORM 框架进行数据库增删改查等一系列操作,包括了安装配置、定义数据模型以及操作数据表格等过程。通过本篇文章的学习,相信读者已经学会了如何在 Fastify 框架中应用 Sequelize ORM 框架,能够更加便捷地进行数据库操作,提高开发效率。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d78b5da941bf7134d82f10