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

下面我将为你详细讲解“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 索引过长1071-max key length is 767 byte

      原因 数据库表采用utf8编码,其中varchar(255)的column进行了唯一键索引 而mysql默认情况下单个列的索引不能超过767位(不同版本可能存在差异)   于是utf8字符编码下,255*3 byte 超过限制   解决 1  使用innodb引擎; 2  启用innodb_large_prefix选项,将约束项扩展至3072byte; …

    MySQL 2023年4月12日
    00
  • PHP使用PDO操作sqlite数据库应用案例

    针对这个主题,我将给您提供完整的攻略,帮助您使用PDO操作sqlite数据库,以及两个示例说明。 什么是PDO? PHP PDO(PHP Data Objects)扩展是一种将数据存储在数据库中的通用方式,可用于访问所有支持PDO的数据库。支持PDO的数据库包括MySQL、PostgreSQL和SQLite等。 使用PDO可以方便地操作各种数据库,使我们能够…

    database 2023年5月21日
    00
  • SQL语法 分隔符理解小结

    下面我来详细讲解一下“SQL语法 分隔符理解小结”的攻略。 理解分隔符 SQL语言中,分隔符一般用于表示语句的结束。在MySQL中,默认的分隔符是分号(;)。在执行SQL语句时,我们需要在SQL语句的最后加上一个分号,表示该条语句已经结束。 但是,当我们需要在一个SQL语句中定义一个存储过程、触发器或函数时,我们需要在其中嵌套SQL语句,这时候如果每个SQL…

    database 2023年5月21日
    00
  • Hadoop和MongoDB的区别

    Hadoop和MongoDB都是非关系型数据库。Hadoop是一个高可用性的分布式文件系统,支持大量数据的存储,以及数据的处理和管理。而MongoDB是一个面向文档存储的NoSQL数据库,具备稳定性,性能和可扩展性。下面着重从以下几个方面来讲解Hadoop和MongoDB的区别: 数据的存储 Hadoop存储数据使用的是Hadoop分布式文件系统(HDFS)…

    database 2023年3月27日
    00
  • Laravel框架环境与配置操作实例分析

    Laravel框架环境与配置操作实例分析 Laravel是一款流行的PHP Web框架,拥有良好的文档和社区支持。使用Laravel开发Web应用可以提高开发效率,降低开发难度。本文将讲解Laravel框架的环境与配置操作实例分析。 1. 环境要求 Laravel框架有一定的环境要求,以下是Laravel 8.x的环境要求: PHP版本 >= 7.3.…

    database 2023年5月22日
    00
  • Centos7安装Redis

    https://www.cnblogs.com/heqiuyong/p/10463334.html 一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装  [root@localhost local]# yum install -y gcc    二、下载并解压安…

    Redis 2023年4月13日
    00
  • LNMP下使用命令行导出导入MySQL数据库的方法

    当我们在LNMP环境下开发网站时,经常需要将本地开发环境的数据库导出到生产环境中,或者从生产环境中导出数据到本地测试环境中。这时候命令行导出导入MySQL数据库就成为了一个非常方便的方式。 以下是完整攻略: 1. 导出数据库 使用命令行导出MySQL数据库非常方便,首先我们需要确定要导出哪个数据库和导出的路径。打开终端,可以使用以下命令导出。 mysqldu…

    database 2023年5月21日
    00
  • MySQL 常见的数据表设计误区汇总

    MySQL 常见的数据表设计误区汇总 在进行MySQL数据库表设计时,常常会遇到各种各样的问题和误区。本文将汇总常见的数据表设计误区,为你提供完整和详细的攻略,帮助你优化数据库表设计,提高数据处理的效率。 误区1:忽视命名规则 在设计数据表时,命名规则非常重要,它能够提高数据表的可理解性和可维护性,方便其他开发人员的使用和维护。 解决方案:遵循一定的命名规则…

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