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

在前端开发中,数据处理是非常关键和基础的部分。而关系型数据库则是常见的数据存储方式。在本文中,我们将使用 Node.js 和 PostgreSQL 实现关系型数据库的操作。

前置准备

在开始之前,我们需要安装 PostgreSQL 数据库和 Node.js 环境。

  1. 安装 PostgreSQL

可以在官网下载安装包,按照提示安装即可。

  1. 安装 Node.js

可以在官网下载安装包,安装完毕后可以使用命令行工具来验证是否安装成功:

---- --

--- --

如果输出的版本号与官网最新版本不一致,可能需要手动更新一下。

创建数据库

  1. 登录 PostgreSQL

运行以下命令即可打开 PostgreSQL 的 CLI:

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

其中 -U 选项表示使用的用户,这里我们使用默认的管理员账户 postgres。成功登录后会看到命令行提示符变为类似于 postgres=# 的格式。

  1. 创建数据库

运行以下命令创建我们的测试数据库:

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

可以通过以下命令来查看已有的数据库:

--

建立连接

  1. 安装 Node.js PostgreSQL 驱动

我们可以通过 npm 来安装库 pg,它提供了 Node.js 与 PostgreSQL 的交互。运行以下命令即可安装:

--- ------- --
  1. 建立连接

在 Node.js 中,我们可以使用以下代码来建立连接:

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

其中,

  • Poolpg 库中的一个类,用于管理 PostgreSQL 连接池。
  • user 表示连接数据库的用户。
  • host 表示数据库所在的主机名或 IP。
  • database 表示要连接的数据库名称。
  • password 表示连接数据库需要的密码。
  • port 表示连接数据库的端口号。

可以根据实际情况修改这些参数。需要注意的是,默认情况下连接池的大小为 10,也可以手动设置。

建立连接后,我们可以通过以下代码进行一个基本的查询操作:

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

这里我们查询了当前时间,并通过回调函数打印了查询结果。注意,查询操作完成后需要手动结束连接池。

CRUD 操作

接下来,我们将实现增、删、改、查四种基本的操作,并使用 Promise 封装便于调用和维护。

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

上述代码中,

  • tableName 表示要插入数据的表名。
  • values 表示一个键值对对象,其中键为字段名称,值为要插入的数据。

函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回插入数据后的完整记录。可以用以下代码进行测试:

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

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

上述代码中,

  • tableName 表示要删除数据的表名。
  • where 表示筛选条件,一个键值对对象,其中键为字段名称,值为需要筛选的数据。

函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回删除数据后的完整记录。可以用以下代码进行测试:

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

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

上述代码中,

  • tableName 表示要更新数据的表名。
  • values 表示一个键值对对象,其中键为需要更新的字段名称,值为需要更新的数据。
  • where 表示筛选条件,一个键值对对象,其中键为字段名称,值为需要筛选的数据。

函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回更新数据后的完整记录。可以用以下代码进行测试:

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

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

上述代码中,

  • tableName 表示要查询的表名。
  • fields 表示需要查询的字段数组,如 ['id', 'name']
  • where 表示筛选条件,一个键值对对象,其中键为字段名称,值为需要筛选的数据,默认为空对象。
  • orderBy 表示排序字段,如 'age DESC' 表示按照年龄降序排列,默认为空字符串。
  • limit 表示限制返回结果的数量,如 5 表示只返回前五条数据,不做限制则使用 -1

函数会根据参数生成 SQL 语句并向数据库进行查询操作,最后返回查询结果数组。可以用以下代码进行测试:

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

总结

通过本文的学习,我们已经掌握了使用 Node.js 和 PostgreSQL 实现关系型数据库的操作。在实际开发中,可以根据需要灵活运用这些基本的 CRUD 操作来完成数据的增删改查。

完整示例代码请见这里

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


猜你喜欢

  • Socket.io 实现多人填词游戏教程

    前言 现代化的互联网技术为我们带来了各种各样的互动游戏,其中最具人气的游戏之一就是填词游戏。填词游戏简单易懂,同时涵盖了多种游戏元素,可以作为一种娱乐方式和智力锻炼工具。

    1 年前
  • ES9 的异步生成器函数详解

    在前端开发中,异步操作已经成为了日常工作中的必要部分,而在 JavaScript 中,异步编程则是使用回调函数和 Promise 对象来处理。而 ES9 中新增的异步生成器函数则为我们带来了更为灵活和...

    1 年前
  • Docker 中如何使用容器之间的数据卷共享数据?

    Docker 是一个用于构建、发布和管理应用程序的开源平台,它允许开发人员将应用程序以容器的形式打包并运行在任何支持 Docker 的机器上。在使用 Docker 构建应用程序时,常常需要在不同的容器...

    1 年前
  • 在 .NET 应用中使用 Server-sent Events 实现数据同步的方案

    前言 当我们的应用需要实时地更新数据时,可以使用 Server-sent Events 技术。本文将介绍如何在 .NET 应用中使用 Server-sent Events 实现数据同步的方案。

    1 年前
  • Fastify Vs Express:Node.js Web 框架的性能比较

    近年来,Node.js 的生态系统变得越来越庞大,出现了越来越多的 Web 框架。其中,Express 和 Fastify 是两个最受欢迎的 Node.js Web 框架。

    1 年前
  • 如何在 PM2 中部署和管理 Socket.io 应用

    Socket.io 是一个流行的实时通信库,但是在部署和管理 Socket.io 应用时可能会出现一些问题。在本文中,我们将介绍如何使用 PM2 部署和管理 Socket.io 应用。

    1 年前
  • React + Enzyme + Jest 开发:轻松入门

    React 是现代 Web 前端开发中非常流行的一种 JavaScript 框架,它帮助前端开发人员构建可重用、可维护、高性能的 Web 应用程序。而 Enzyme 和 Jest 则是 React 生...

    1 年前
  • TypeScript 中的类别名与枚举别名的使用

    在 TypeScript 中,类别名和枚举别名是两个很有用的功能。它们能够使代码更易读、更易维护,同时也有效地避免了代码中出现重复的类型定义。以下是关于如何使用 TypeScript 中的类别名与枚举...

    1 年前
  • 如何在 Material Design 中使用推荐控件

    简介 Material Design 是 Google 推出的一套全新的设计语言,旨在为用户提供更美观、更直观、更易用的用户界面。在 Material Design 中,推荐控件是一种非常实用的控件,...

    1 年前
  • Vue.js 2.0 中如何使用 v-if 和 v-show 的优劣分析

    Vue.js 是一种用于构建用户界面的渐进式框架,它允许开发者通过组件化的方式来构建应用程序。Vue.js 提供了两种常用的指令 v-if 和 v-show 用于控制HTML元素的显示和隐藏。

    1 年前
  • ES12 中的模块命名空间的优化

    在前端开发中,模块化是一个十分重要的概念。而随着 ES6 的普及,模块化也在 JavaScript 中变得越来越重要。ES6 版本中,JavaScript 支持了模块化,但其模块化的使用还存在一些问题...

    1 年前
  • PWA 中如何使用 WebAssembly

    随着 PWA 技术的不断发展,越来越多的 Web 开发者开始尝试将 WebAssembly (Wasm) 应用到 PWA 中。WebAssembly 是一种低级代码格式,它能够提供高性能的计算能力和更...

    1 年前
  • 如何使用 LESS 和 CSS Grid 实现响应式布局

    在前端开发中,响应式布局是非常重要的一个概念。随着移动设备的普及,人们越来越需要能够自适应不同屏幕大小和分辨率的网站和应用程序。在这篇文章中,我将介绍如何使用 LESS 和 CSS Grid 实现响应...

    1 年前
  • 详解 Tailwind CSS 的 dark mode 实现方法及注意事项

    随着越来越多的应用程序支持暗黑模式,使用 Tailwind CSS 库进行暗黑模式的开发是一种非常流行的方式。Tailwind CSS 是一种实用型的 CSS 框架,为开发者提供了一系列基于功能和实用...

    1 年前
  • Express.js 中的热重载技术实现方法

    热重载技术是指在应用程序运行过程中,无需重新启动服务器即可更新代码文件。这使得开发者可以快速地进行代码编辑和测试,并加快了开发速度。在 Express.js 中,我们可以借助一些工具来实现热重载技术,...

    1 年前
  • ES7 异步函数规范: Async & Await

    在现代的 Web 开发中,异步编程是非常重要的一个技能。在 JavaScript 中,异步编程通常通过回调函数或者 Promise 来实现。ES7 中引入了一种新的语法:Async & Awa...

    1 年前
  • Next.js 中如何使用 Vue.js?

    随着前端技术的不断更新和发展,出现了很多新的前端框架和库,其中 Next.js 和 Vue.js 都是非常热门和优秀的技术。那么,如何在 Next.js 中使用 Vue.js 呢?本文将为您详细介绍。

    1 年前
  • Mongoose 中使用 select 函数实现文档数据筛选

    在使用 MongoDB 数据库时,我们通常会使用 Mongoose 这个优秀的 Node.js 数据库操作库来进行数据的操作和管理。其中,文档数据的查询和筛选是开发中非常常见的需求。

    1 年前
  • 使用 ES10 中新增的 Array flat 方法简化二维数组操作

    使用 ES10 中新增的 Array flat 方法简化二维数组操作 在前端开发中,我们经常需要处理多维数组,这种操作可能会比较繁琐,使用 ES10 中新增的 Array flat 方法可以简化这种操...

    1 年前
  • Promise 与 Callback 的功能对比

    引言 在前端开发中,异步操作是经常遇到的问题。在 JavaScript 中,异步操作的实现方式有两种:Callback 和 Promise。本文将对这两种方式的功能进行对比,并对它们的使用进行简要的介...

    1 年前

相关推荐

    暂无文章