NodeJS Express使用ORM模型访问关系型数据库流程详解

yizhihongxing

下面我将为你详细讲解“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-nameuser-namepasswordlocalhostmysql分别为你的数据库名称、用户名、密码、服务器名称、数据库引擎等。

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技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架

    关于“Mysql limit 优化,百万至千万级快速分页 复合索引的引用并应用于轻量级框架”的攻略,具体内容如下: 一、Mysql limit 优化 1.1 基本介绍 LIMIT 是 MySQL 中用于限制查询结果数量的一个关键字。当我们需要查找大量数据时,通过 LIMIT 可以限制查询结果的数量,从而提高查询效率。 1.2 常规 limit 语法 SELE…

    database 2023年5月19日
    00
  • Mysql索引常见问题汇总

    Mysql索引常见问题汇总 为什么要使用索引? 在Mysql中,索引可以提高查询效率,加快数据检索速度。具体体现在以下几个方面: 索引提高了查找的速度,能够更快地找到需要的数据; 对于大表的情况,通过索引可以减少磁盘I/O操作,提高查询效率; 可以通过索引实现数据的排序,提高数据的分组和联合查询的效率。 哪些列适合建立索引? 经常作为查询条件的列; 作为排序…

    database 2023年5月19日
    00
  • MySQL备份与恢复之冷备(1)

    MySQL备份与恢复之冷备(1)完整攻略 在MySQL数据库的日常运维过程中,备份是一个至关重要的环节。备份包括热备和冷备两种方式,热备通常是指在线实时备份,不影响应用的正常使用;而冷备则是指在关闭数据库时进行备份,通常在数据量较大时,在非业务高峰期执行。 冷备的原理和优势 冷备的原理是关闭数据库实例后,将数据库的数据进行备份。这个过程需要停用数据库服务,可…

    database 2023年5月21日
    00
  • 关于使用MyBatis简化JDBC开发和解决SQL语句警告的问题

    让我来详细讲解“关于使用MyBatis简化JDBC开发和解决SQL语句警告的问题”的完整攻略。 使用MyBatis简化JDBC开发 什么是MyBatis MyBatis 是一种基于 Java 语言的持久化框架,它封装了 JDBC 操作的细节,通过 XML 文件或注解来指定 SQL 语句,从而实现 DAO 层的开发。 使用 MyBatis 可以极大地简化 DA…

    database 2023年5月21日
    00
  • 为什么Mysql 数据库表中有索引还是查询慢

    为什么MySQL数据库表中有索引还是查询慢? MySQL是一种关系型数据库管理系统,为了提高查询性能,我们通常会在表中建立索引。但是,在某些情况下,即使有索引,还是会出现查询慢的问题。本文将探讨这些情况,并提供解决方案。 原因一:使用了错误的索引在MySQL中,我们可以为表的列创建不同类型的索引,如B+树索引、哈希索引等。但是并不是所有类型的索引都适合特定的…

    database 2023年5月22日
    00
  • 关于mysql数据库格式化简单介绍

    下面是“关于Mysql数据库格式化简单介绍”的完整攻略。 Mysql数据库格式化简单介绍 什么是Mysql数据库格式化 Mysql数据库格式化是指将Mysql数据库中的数据表、数据列、索引、视图、存储过程等物理结构规范化,让它们符合一定的规则和标准,以提高Mysql数据库的性能、可读性和可维护性。Mysql数据库格式化通常涉及到的内容有: 数据表格式化 数据…

    database 2023年5月22日
    00
  • 编程界主流脚本编程语言的比较和选择

    编程界主流脚本编程语言的比较和选择 概述 在众多编程语言中,脚本编程语言被广泛应用于Web开发、数据处理、自动化脚本等领域。本文将介绍编程界主流脚本编程语言的比较和选择,包括Python、Ruby、Perl、JavaScript等。 Python Python是一种高级、面向对象的脚本编程语言,具有易读性、简洁性和可扩展性等优点,已经成为非常流行的编程语言之…

    database 2023年5月22日
    00
  • Redis 和 MS SQL Server 的区别

    Redis 和 MS SQL Server 都是不同类型的数据存储技术,两者的使用场景和优劣势不同。 Redis 简介 Redis是一种开源的高速缓存和内存型数据库,它可以处理不同数据类型,如列表、字符串、哈希集合等,还允许执行复杂的服务器端脚本。Redis数据存储在内存中,但也可以定期或在写入时持久性到磁盘。Redis具有极其高效的访问速度,这得益于它所有…

    database 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部