下面我将为你详细讲解“NodeJS Express使用ORM模型访问关系型数据库流程详解”的完整攻略。
一、什么是ORM模型?
ORM模型,全称Object relational mapping,即对象关系映射。ORM模型是一种程序设计技术,将面向对象的编程语言和固定关系型数据库中间的转换。ORM通过简化了许多编程的过程,使用户能够更加简单的访问并操作数据库,增加系统的稳定性并提高工作效率。
目前常见的ORM框架有Sequelize、TypeORM、ORM2等,而本文所讲述的流程是基于Sequelize框架的。
二、使用Sequelize进行ORM操作流程
1. Sequelize框架的安装
在Node.js中使用Sequelize,需要对其进行安装。在终端命令窗口中执行如下命令:
npm i sequelize mysql2
2. Sequelize框架的连接配置
在应用程序的启动文件(一般为app.js)中,输入如下代码,连接MySQL数据库:
const Sequelize = require('sequelize');
const sequelize = new Sequelize("database-name", "user-name", "password", {
host: "localhost",
dialect: "mysql"
});
其中,上述的database-name
、user-name
、password
、localhost
、mysql
分别为你的数据库名称、用户名、密码、服务器名称、数据库引擎等。
3. 创建模型
在Sequelize中,模型是一个代表数据库中表的类。模型定义模型中包含的数据及其相关操作。根据业务需求,可以创建自定义模型。例如,下面代码中创建一个名为User(用户)的模型:
const User = sequelize.define("User", {
name: Sequelize.STRING,
age: Sequelize.INTEGER
});
其中,User是模型的名字,sequelize.define()
参数二:列配置方法包含了所有与你想创建的模型相关的信息。
4. 数据库初始化
在创建模型后,还需要通过执行下述代码创建表(仅需执行一次):
sequelize.sync();
这个模型中定义的属性将自动映射到数据库表中,执行第一次同步时,会在MySQL数据库中创建一张名为users的表,其表结构与上述示例代码中User所定义的表结构相同。
5. 数据库增删改查
经过上述步骤,Sequelize框架已经可以实现ORM操作了。下面展示一些基础的操作:
// 新增用户
User.create({
name: 'John',
age: 20
});
// 查询用户
User.findOne({
where: {
name: 'John'
}
});
// 更新用户信息
User.update({
age: 21
}, {
where: {
name: 'John'
}
});
// 删除用户
User.destroy({
where: {
name: 'John'
}
});
三、使用Sequelize进行关联查询
1. 一对多关联
在Sequelize中,除了基本的增删改查外,还支持不同数据表之间的关联查询。例如一对多的关联。示例如下:
// 定义模型
const User = sequelize.define('User', {
name: Sequelize.STRING
});
const Order = sequelize.define('Order', {
productName: Sequelize.STRING
});
// 关联查询
User.hasMany(Order);
Order.belongsTo(User);
User.findOne({
where: {
name: 'John'
},
include: Order
}).then(user => {
// 用户与订单的关联查询结果
console.log(user.orders);
});
在上述代码中,我们通过User.hasMany(Order);
和Order.belongsTo(User);
表示建立User与Order两个模型的一对多关联。上述代码执行结果,即为“John”用户的所有订单列表。
2. 多对多关联
除了一对多这种基础关联方式外,Sequelize还支持多对多的关联方式。示例如下:
// 定义模型
const User = sequelize.define('User', {
name: Sequelize.STRING
});
const Project = sequelize.define('Project', {
name: Sequelize.STRING
});
const UserProject = sequelize.define('UserProject', {
roleId: Sequelize.INTEGER
});
// 关联查询
User.belongsToMany(Project, { through: UserProject });
Project.belongsToMany(User, { through: UserProject });
User.findOne({
where: {
name: 'John'
},
include: Project
}).then(user => {
// 用户与项目的多对多关联查询结果
console.log(user.projects);
});
在上述代码中,我们通过User.belongsToMany(Project, { through: UserProject });
和Project.belongsToMany(User, { through: UserProject });
表示建立User、Project与UserProject三个模型之间的多对多关联关系。上述代码执行结果,即为“John”用户所参与的所有项目列表。
这就是使用Sequelize进行ORM操作和关联查询的完整攻略,希望能对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:NodeJS Express使用ORM模型访问关系型数据库流程详解 - Python技术站