使用 Node.js 和 Sequelize 实现关系型数据库的操作

介绍

Node.js 是一个流行的服务器端 JavaScript 运行环境,用于构建高可靠性、高扩展性的应用程序。Sequelize 是一个基于 Node.js 的 ORM(Object-Relational Mapping) 框架,它可以帮助我们代码化地访问和管理关系型数据库。

本文将介绍如何使用 Node.js 和 Sequelize 来实现关系型数据库的常见操作,其中包括如何连接数据库、创建表、插入数据、更新数据、删除数据以及查询数据。

创建项目

在开始之前,首先需要创建一个新的 Node.js 项目。如果您已经有现成的 Node.js 项目了,可以直接跳过这一步。

  1. 安装 Node.js 和 npm

    Node.js 官网 下载并安装 Node.js,安装完成后会自动安装 npm。您可以在终端窗口中输入以下命令来验证是否安装成功:

    ---- --
    --- --

    如果返回版本号,表示 Node.js 和 npm 已经正确安装。

  2. 创建新的 Node.js 项目

    在终端窗口中创建一个新的 Node.js 项目,执行以下命令:

    ----- ---------
    -- ---------
    --- ----

    按照提示输入您的项目信息即可。

  3. 安装 Sequelize 和相关模块

    在项目根目录运行以下命令来安装 Sequelize 和相关模块:

    --- ------- ------ --------- ------------- ------
    • sequelize:Sequelize 的主模块,提供对关系型数据库的访问和管理。
    • sequelize-cli:Sequelize 的命令行工具,用于创建数据表、填充初始数据、生成模型等。
    • mysql2:MySQL 数据库驱动程序,用于连接 MySQL 数据库。

连接数据库

在 Node.js 中使用 Sequelize 访问数据库,需要首先建立与数据库的连接。在本例中,我们使用 MySQL 数据库进行演示。在项目根目录下创建一个 index.js 文件,输入以下代码来建立连接和关闭连接:

----- --------- - ---------------------

----- --------- - --- -------------------------- ----------- ----------- -
  ----- ------------
  -------- -------
---

---------
  ---------------
  -------- -- -
    ----------------------- --- ---- ----------- ----------------
  --
  ---------- -- -
    --------------------- -- ------- -- --- ----------- -----
  --
  ----------- -- -
    ------------------
  ---

其中:

  • database_name:数据库名称,需要自行替换为实际的数据库名称。
  • username:数据库用户名,需要自行替换为实际的用户名。
  • password:数据库密码,需要自行替换为实际的密码。
  • host:数据库服务器地址,默认为 localhost
  • dialect:数据库类型,本例中为 MySQL。

运行 node index.js 命令即可连接数据库。

创建表

在建立好与数据库的连接之后,我们需要定义数据表的模型。模型是 Sequelize 中与某张数据表对应的 JavaScript 类,它用于描述数据表的结构和约束条件。

在使用 Sequelize 创建数据表前,需要先安装 Sequelize CLI,并使用它来生成数据表的模型。

  1. 全局安装 Sequelize CLI

    执行以下命令来全局安装 Sequelize CLI:

    --- ------- -------- -------------
  2. 初始化 Sequelize 项目

    在项目根目录中执行以下命令来初始化 Sequelize 项目:

    --------- ----

    这个命令会在项目根目录下生成一个 config 文件夹和一个 models 文件夹。

  3. 生成数据表的模型

    在终端中执行以下命令来生成数据表的模型:

    --------- -------------- ------ ---- ------------ ----------------------------------------

    其中:

    • User:数据表的名称。
    • name:string,email:string,password:string:定义 User 数据表中的字段、类型和约束条件。

    运行完后,models 文件夹下会生成一个名为 User.js 的文件,它就是 User 数据表的模型。

  4. 同步数据表结构

    在代码中引入 User 模型,并使用 sequelize.sync() 方法将模型与数据表同步:

    ----- - ---------- ------ --------- - - ---------------------
    ----- --------- - --- -------------------------- ----------- ----------- -
      ----- ------------
      -------- -------
    ---
    
    ----- ---- - ----------------------------------- -----------
    
    ---------------- ------ ---- --
      -------- -- -
        --------------------- ----------------
      --
      ----------- -- -
        ------------------
      ---

    其中:

    • force: true:表示如果数据表已经存在,则删除后重新创建。

运行 node index.js 命令即可创建 User 数据表。

插入数据

User 数据表中插入一条新数据,可以使用 User.create() 方法。

----- - ---------- ------ --------- - - ---------------------
----- --------- - --- -------------------------- ----------- ----------- -
  ----- ------------
  -------- -------
---

----- ---- - ----------------------------------- -----------

----------------
  -------- -- -
    ------ -------------
      ----- ----- -----
      ------ ----------------------
      --------- --------
    ---
  --
  ---------- -- -
    ---------------------------
  --
  ----------- -- -
    ------------------
  ---

其中:

  • User.create():创建一条新记录,并插入到数据库中。
  • .then(user => console.log(user.toJSON())):输出插入成功的数据记录。

运行 node index.js 命令即可插入一条新数据到 User 数据表中。

更新数据

User 数据表中更新一条数据,可以使用 User.update() 方法。

----- - ---------- ------ --------- - - ---------------------
----- --------- - --- -------------------------- ----------- ----------- -
  ----- ------------
  -------- -------
---

----- ---- - ----------------------------------- -----------

----------------
  -------- -- -
    ------ -------------
      ----- ----- ----
    -- -
      ------ - --- - -
    ---
  --
  -------- -- -
    ----------------- ------- ----------------
  --
  ----------- -- -
    ------------------
  ---

其中:

  • User.update():更新指定条件的数据记录。
  • { where: { id: 1 } }:更新条件,本例中表示更新 id1 的数据记录。
  • .then(() => console.log('Data updated successfully.')):输出更新成功的提示信息。

运行 node index.js 命令即可更新 User 数据表中 id1 的数据记录的 name 字段为 Jane Doe

删除数据

User 数据表中删除一条数据,可以使用 User.destroy() 方法。

----- - ---------- ------ --------- - - ---------------------
----- --------- - --- -------------------------- ----------- ----------- -
  ----- ------------
  -------- -------
---

----- ---- - ----------------------------------- -----------

----------------
  -------- -- -
    ------ --------------
      ------ - --- - -
    ---
  --
  -------- -- -
    ----------------- ------- ----------------
  --
  ----------- -- -
    ------------------
  ---

其中:

  • User.destroy():删除指定条件的数据记录。
  • { where: { id: 1 } }:删除条件,本例中表示删除 id1 的数据记录。
  • .then(() => console.log('Data deleted successfully.')):输出删除成功的提示信息。

运行 node index.js 命令即可删除 User 数据表中 id1 的数据记录。

查询数据

User 数据表中查询数据,可以使用 User.findAll() 方法。

----- - ---------- ------ --------- - - ---------------------
----- --------- - --- -------------------------- ----------- ----------- -
  ----- ------------
  -------- -------
---

----- ---- - ----------------------------------- -----------

----------------
  -------- -- -
    ------ ---------------
  --
  ----------- -- -
    -------------------------- -- ----------------
  --
  ----------- -- -
    ------------------
  ---

其中:

  • User.findAll():查询数据表中所有数据记录。
  • .then(users => console.log(users.map(user => user.toJSON()))):输出查询到的所有数据记录。

运行 node index.js 命令即可查询 User 数据表中的所有数据记录。

总结

通过本文的学习,我们了解了如何使用 Node.js 和 Sequelize 来连接、操作关系型数据库,包括创建连接、创建数据表、插入数据、更新数据、删除数据和查询数据。掌握这些基本的数据库操作,可以为我们后续的开发工作打下坚实的基础。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/648d158a48841e9894b61531


猜你喜欢

  • CSS Grid 中文教程带你玩转网页布局

    在前端开发中,网页布局一直是一个重要的部分。过去,人们使用float等属性来实现网页布局,但它们难以让布局达到理想状态。CSS Grid是一个新的布局方式,它可以让页面布局更加美观和易于维护。

    1 年前
  • 并发编程中的性能优化技巧

    在前端开发中,并发编程已成为不可避免的技术要求之一。在处理大量数据或者高频访问时,优化并发性能能够显著提高应用的响应速度和用户体验。 本文将介绍一些并发编程中的性能优化技巧,这些技巧既适用于Web前端...

    1 年前
  • Material Design 中常见问题的解决方案

    Material Design 是一种设计语言,由 Google 推出,用于创建用户界面及应用程序界面的设计。这种设计语言在开发移动端应用和桌面应用时十分流行,然而在实际使用过程中,我们可能会遇到一些...

    1 年前
  • Enzyme 中如何设置 React 组件的 “默认” props

    Enzyme 中如何设置 React 组件的 “默认” props 在开发 React 组件时,通常需要设置一些默认的 props 值。这些默认值可以确保在没有传递必须的 props 时,组件仍然能够...

    1 年前
  • Koa.js 中如何处理多个异步请求?

    前言 Koa.js 是一款基于 Node.js 平台的下一代 web 开发框架,它使用了 ES2017 中的异步语法,可以更加简洁和优雅地处理异步请求。在实际开发中,我们往往会遇到需要并发处理多个异步...

    1 年前
  • ESLint 插件推荐:eslint-plugin-import

    在前端开发中,代码质量是非常重要的,这不仅能够提高代码的可维护性,还能提高代码的可读性和效率。在前端代码规范检测中,ESLint 已经成为了不可或缺的工具。而 eslint-plugin-import...

    1 年前
  • Mongoose 中 Model 自定义方法封装技巧

    有时候我们需要在 Mongoose 的 Model 中添加一些方法,以便于在应用的其他地方使用。本文将介绍如何在 Mongoose 中实现自定义 Model 方法的封装技巧。

    1 年前
  • CSS Reset扩展库:让你处理样式更加灵活

    前言 当我们开始开发Web应用程序时,我们通常需要使用CSS来设置我们网站的样式。但是,在编写CSS时,我们会遇到一些困难,因为浏览器可能会在默认样式上有所不同。这就是CSS Reset库作用的地方。

    1 年前
  • 如何正确地使用 PWA 缓存静态资源

    随着 PWA 技术不断发展,越来越多的前端开发者开始关注和应用于自己的项目中。其中,缓存静态资源是 PWA 中一个非常重要的功能,可以大大提升应用的性能和用户体验。

    1 年前
  • 如何使用 TailwindCSS 构建一个响应式表格

    TailwindCSS 是一个流行的 CSS 框架,它提供了许多实用的工具类来加速前端开发。本文将详细介绍如何使用 TailwindCSS 构建一个响应式表格,并提供示例代码供读者参考。

    1 年前
  • 使用 PM2 管理 Node.js 应用时如何进行进程监控

    在 Node.js 应用的部署和运行过程中,我们通常会使用 PM2 管理工具进行进程管理。PM2 提供了一些强大的功能,例如进程守护、负载均衡、日志管理、运行状态监测等。

    1 年前
  • Redis 性能调优及其优化方式

    引言 Redis 是一种开源的键值对数据库,具有轻量级、高性能、丰富的数据类型以及支持多种语言等优点。在前端开发中,我们可以使用 Redis 存储临时变量、缓存数据等。

    1 年前
  • 如何使用 Cypress 测试 Angular 应用

    前言 Cypress 是目前非常流行的前端自动化测试工具,其优势在于可实现端到端测试并提供了友好的交互式 UI。本文将介绍如何使用 Cypress 测试 Angular 应用,并分享一些最佳实践。

    1 年前
  • 使用 ES11 中的 globalThis 进行全局变量绑定

    在前端开发中,全局变量通常指的是可以在任何地方访问的变量,它们通常用于存储共享数据。但是,在 JavaScript 中,全局变量的管理一直是一个很棘手的问题。 在以前的版本中,我们需要使用不同的方式来...

    1 年前
  • RxJS debounce 的正确使用姿势

    前言 在前端开发中,我们经常需要来处理用户的输入,比如搜索框的输入、滚动事件的处理等。但是,由于用户的输入事件往往会非常频繁,这些事件的处理可能会对页面的性能造成影响。

    1 年前
  • Mocha 报错 TypeError: Cannot set property 'timeout' of undefined 怎么办?

    在使用 Mocha 进行前端单元测试时,我们有时会遇到 TypeError: Cannot set property 'timeout' of undefined 的错误提示。

    1 年前
  • 表单元素渲染问题的解决方案 -- 基于 Custom Elements

    引言 在 Web 前端开发中,表单元素的使用极其普遍。然而,现有的表单元素在样式和功能上的限制往往会导致开发者在实现某些场景时遇到困难,甚至无法满足需求。这时候,我们需要寻找一种更加灵活和可自定义的表...

    1 年前
  • 聊聊使用 Redux Form 解决表单管理的问题

    在网页应用中,表单管理是一个基本且重要的功能。但是,随着应用复杂度的增加,表单管理会变得越来越棘手。Redux Form 是一个非常优秀的库,用于解决表单管理的问题。

    1 年前
  • Next.js 如何配置 TypeScript?

    在现代前端开发中,很多项目都采用 TypeScript 语言来增强代码的可维护性和健壮性。Next.js 作为一个流行的 React 框架,在其最新版本中提供了与 TypeScript 结合使用的完美...

    1 年前
  • 使用 pino - 速度最快的 Node.js 日志记录库 - 与 Fastify 一起构建应用程序

    Node.js 是一个流行的服务器端 JavaScript 运行时,用于构建网络应用、API 和其他服务端应用。在这个过程中,日志记录是一个非常重要的方面。它可以帮助你追踪应用程序的问题,分析应用程序...

    1 年前

相关推荐

    暂无文章