介绍
Object-relational mapping (ORM) 是一种将关系数据库中数据转换为对象的技术。在 Node.js 生态中,一些 ORM 框架(如 Sequelize 和 TypeORM)已经成为主流,以帮助开发人员更轻松地处理数据库操作。
随着 Deno 的推出,开发人员开始寻找一种适用于 Deno 的 ORM 解决方案。在本文中,我们将介绍如何使用 Oak 和 DenoDB 实现 ORM。
环境设置
在使用 DenoDB 之前,需要确保已经安装了 Deno。您可以通过 Deno 官网 下载最新版本的 Deno。
然后,使用以下命令安装 Oak 和 DenoDB:
---- ------- ---------- ------------ ----------- ----------------------------------
安装 Denon 后,创建新项目目录并在其中创建 deps.ts
文件。在该文件中引入 Oak 和 DenoDB:
-- ------- ------ - ------------ ------- -------- --------- ---------- ------- - ---- --------------------------------- ------ - ---------- --------- ------ ----------------- - ---- ------------------------------------
连接数据库
首先,我们需要连接到 SQLite 数据库。可以使用 SQLite3Connector
类建立连接,如下所示:
------ - ---------------- - ---- ------------- ----- --------- - --- ------------------ --------- -------------------- --- ----- --------------------
此操作将创建名为 database.sqlite
的新数据库文件并将其连接到我们正在运行的服务器。
创建模型
接下来,在我们的应用程序中创建一个模型。这个模型将对应于在 SQLite 数据库中创建的一个数据表。在我们的例子中,我们将创建一个名为 User
的表。
------ - ---------- ----- - ---- ------------- ------ ----- ---- ------- ----- - ------ ----- - -------- ------ ---------- - ----- ------ ------ - - --- - ----------- ----- -------------- ---- -- ---------- ----------------- --------- ----------------- -- -
此代码创建一个 User
模型,其使用名为 users
的表,自动创建 createdAt
和 updatedAt
字段(因为 timestamps
属性为 true
)。fields
对象定义了每个字段的数据类型,以及该表是否存在主键。
创建控制器
接下来,我们将创建一个控制器,它允许我们执行一些操作。这个控制器将使用用户模型与数据库进行交互。
------ - -------- -------- - ---- ------------- ------ - ---- - ---- -------------------- ------ ----- -------------- - ----- ------- -------- -- - --------- -------- -- - ----- ----- - ----- ------------ ----- ------------ ----------- ------------ ------------ -------- ------------- - - -------- ----- ----- ------ -- - ----- ------ ------- -------- -- - ------- - --- ------ -- --------- -------- -- - ----- ---- - ----- ------------ --- ----------------- ----------- ------------- - ---- - - -------- ----- ----- ----- - - - -------- ------ -------- ----- --- ------- -- - ----- ------- -------- -------- -- - -------- -------- --------- -------- -- - ----- - ------ - ---------- -------- - - - ----- --------------- ----- ---- - --- ------- -------------- - ---------- ------------- - --------- ----- ------------ ------------- - - -------- ----- ----- ----- -- - ----- -------- ------- -------- -------- -- - ------- - --- ------ -- -------- -------- --------- --------- -- - ----- - ------ - ---------- -------- - - - ----- --------------- ----- ---- - ----- ------------ --- ----------------- ----------- -- ------- - ------------- - - -------- ------ -------- ----- --- ------- -- ------- - -------------- - --------- -- --------------- ------------- - -------- -- -------------- ----- -------------- ------------- - - -------- ----- ----- ----- ------------ --- ----------------- ----------- -- - ----- -------- ------- -------- -- - ------- - --- ------ -- --------- -------- -- - ----- ---- - ----- ------------ --- ----------------- ----------- -- ------- - ------------- - - -------- ------ -------- ----- --- ------- -- ------- - ----- -------------- ------------- - - -------- ---- -- - -
此控制器定义了五个操作:index
、show
、store
、update
和 delete
。这些操作使用 User
模型与数据库交互并响应给客户端。
创建路由
最后,创建路由以连接我们的操作和 URL。
------ - ------------ ------ - ---- ------------- ------ - -------------- - ---- ------------------------- ----- ------ - --- --------- ----- -------------- - --- ----------------- ------ -------------- --------------------- ------------------ -------------------- --------------- --------------------- ------------------ ---------------------- --------------------- ----------------------- ----- --- - --- -------------- -------------------------
此代码创建了一个新的路由器,以使用提供的控制器方法定义各种 URL 端点。最后,应用程序使用路由器将 URL 端点添加到应用程序中。
启动应用程序
最后,启动我们的应用程序:
----- ------------ ----- ---- --- ------------------- ------- -- ------------------------
总结
Denodb 是一个可以在 Deno 上运行的 ORM 解决方案。使用 Denedb,可以轻松地将我们的应用程序连接到 SQLite 数据库并定义模型/控制器,以操作这些模型。
在本文中,我们使用 Oak 和 DenoDB 使用示例代码演示了 Deno 中的 ORM 实现方式。这些示例将帮助您开始使用 DenoDB 在 Deno 中编写更高效的数据访问代码。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/64cb71cf5ad90b6d0420a0c3