Deno 中如何使用 PostgreSQL

Deno 是一个新兴的 JavaScript 和 TypeScript 运行时环境,被许多开发人员视为 Node.js 的替代品。这种新型的运行时环境提供了一种安全、稳定的方式使用 WebAssembly 和 Rust 等其他语言编写的原生扩展,同时具有更好的模块性和工具性。

与 Node.js 类似,Deno 可以与许多数据库进行集成,例如 PostgreSQL。在本文中,我们将探讨如何在 Deno 中使用 PostgreSQL。

安装 PostgreSQL

要在 Deno 中使用 PostgreSQL,首先需要安装它。可以通过 Deno 应用程序来安装它,命令如下:

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

在安装过程中,需要授权运行、读取、网络和环境变量访问权限。授权访问后,此命令将在运行 Deno 应用程序的目录中创建名为 “pgcli” 的可执行文件。

连接 PostgreSQL

一旦安装完成 PostgreSQL,就可以在 Deno 中使用第三方库连接它。我们将使用 Oak web 框架作为示例,在其中创建一个简单的路由并连接到数据库。

首先,我们需要安装 Oak 和相应的 PostgreSQL 驱动程序:

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

然后,我们将创建名为“client”的全局变量,该变量将用于存储连接到数据库的客户端对象。在 Oak 框架的启动函数中,我们将初始化客户端并将其存储在全局变量中:

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

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

我们使用客户端的构造函数来配置连接信息,并调用其 connect() 方法以确保成功连接到数据库。

在 web 应用程序中,我们需要为每个路由创建一个独立的中间件函数。在这里,我们将创建一个名为“getUsers”的路由,该路由从“users”表中检索用户数据并将其作为响应返回。在中间件函数中,我们将使用 client.query() 方法发出 SQL 查询并将结果储存在变量中:

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

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

最后,我们将实例化一个 web 应用程序,并使用路由处理程序将路由 { method: "GET", url: "/users" } 分配给 getUsers 中间件函数:

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

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

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

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

现在,当我们使用 POSTMAN 工具或浏览器访问 localhost:8080/users 地址时,应用程序会从“users”表中检索数据并将其作为响应返回。

结论

在 Deno 中连接 PostgreSQL 可以帮助我们实现更稳定、更安全的数据库交互。本文提供了一个步骤指南,如何安装 PostgreSQL、配置客户端对象以及使用 Oak 框架实现路由和中间件函数等。对于那些希望学习如何在 Deno 中使用 PostgreSQL 的开发者来说,本文既有深度又有实战意义。通过本文和相关示例代码,读者可以轻松地开始使用 Deno 和 PostgreSQL 实现业务需求。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670375aad91dce0dc84b8c88