前言
Deno 是一种新的 JavaScript/TypeScript 运行时环境,它在安全性和开发体验上提供了很多改进。TypeORM 是一个流行的对象关系映射(ORM)库,它支持多个关系型数据库,并提供了强大的查询构建器和迁移工具。在这篇文章中,我们将探讨如何在 Deno 中使用 TypeORM 进行数据库交互。
安装 Deno 和 TypeORM
首先,我们需要安装 Deno 和 TypeORM。请前往 Deno 的官方网站(https://deno.land/)并按照指示安装 Deno。接下来,我们可以使用 Deno 提供的模块管理器在项目中安装 TypeORM。打开您的终端并输入以下命令:
$ deno install --allow-read --allow-write --allow-net -n typeorm https://deno.land/x/typeorm/cli.ts
这个命令将在您的电脑上安装 TypeORM 并将其作为 typeorm
可执行文件。请注意,我们在命令中包括了 --allow-read
、--allow-write
和 --allow-net
权限,这些权限允许 TypeORM 读写文件和进行网络通信。
创建数据库和表
在这个例子中,我们将使用 SQLite 作为我们的数据库。在这个示例中,我们将创建一个名为 example.db
的 SQLite 数据库,并创建一个包含 users
表的数据模型。
创建一个名为 example.db
的 SQLite 数据库:
$ touch example.db
创建一个 User
模型:
-- -------------------- ---- ------- -- ------- ------ - ------- ------- ---------------------- - ---- ------------------------------------- --------- ------ ----- ---- - ------------------------- ---- ------- --------- ---------- ------- --------- ---------- ------- -
这个 User
模型定义了一个包含 id
、username
和 password
字段的表。
接下来,我们需要安装 SQLite3 驱动程序。在终端中输入以下命令:
$ deno install --allow-read --allow-write --allow-net --unstable -n sqlite3 https://deno.land/x/sqlite/mod.ts
现在,我们已经准备好连接到 SQLite 数据库并创建 users
表。在 index.ts
文件中,我们将创建一个 connect()
函数,使用 TypeORM 来连接到数据库并创建 users
表。
-- -------------------- ---- ------- -- -------- ------ - ---------------- - ---- ------------------------------------- ------ - ---- - ---- ------------ ----- -------- --------- - ----- ---------- - ----- ------------------ ----- --------- --------- ------------- --------- ------- ------------ ----- --- ---------------------- -- ----------- -- ------ ---- ----- ----- ----- - --- ------- -------------- - -------- -------------- - ------ ----- ----- - --- ------- -------------- - ------ -------------- - ------ ----- ------------------------------- -------- --------------------- ----- ---- ----------- -- ---- --- ----- ----- -------- - ----- ------------------------------ ---------------- ----- ---- --------- -- ---------- - ----- ----------
注意,我们在连接选项中指定了 SQLite 数据库的类型和名称,并指定了 User
模型作为 entities
配置选项的一部分。我们还将 synchronize
选项设置为 true
,这将自动同步我们的模型定义和数据库表结构。
现在,如果我们运行 deno run --allow-read --allow-write --allow-net index.ts
,我们会看到输出。
Connected to database Inserted users into database All users from database: [ User { id: 1, username: 'Alice', password: '123' }, User { id: 2, username: 'Bob', password: '456' } ]
查询数据
现在我们已经连接到数据库并创建了一些用户,让我们看看如何查询这些用户。
使用 createConnection()
函数创建连接后,我们可以使用 connection.manager
属性来执行查询。
查询所有的用户:
const allUsers = await connection.manager.find(User); console.log("All users from database: ", allUsers);
按条件查询数据:
const alice = await connection.manager.findOne(User, { username: "Alice" }); console.log("Alice: ", alice); const bob = await connection.manager.findOne(User, { password: "456" }); console.log("Bob: ", bob);
使用原始 SQL 进行查询:
const users = await connection.manager.query("SELECT * FROM users WHERE username LIKE ?", ["%A%"]); console.log("All users containing 'A': ", users);
更新数据
我们可以使用 manager.save()
方法更新现有实体。例如,假设我们想要更新 user1
的密码:
user1.password = "new password"; await connection.manager.save(user1);
删除数据
我们可以使用 manager.remove()
方法从数据库中删除实体。例如,假设我们想要删除 user1
:
await connection.manager.remove(user1);
或删除所有用户:
await connection.manager.delete(User, {});
总结
在这篇文章中,我们学习了如何在 Deno 中使用 TypeORM 进行数据库交互。我们创建了一个 SQLite 数据库并创建了一个包含 users
表的数据模型。我们使用了 TypeORM 的管理器来执行查询、更新和删除操作。希望这篇文章对您有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64ae9b0a48841e9894ac4dda