如何在 Deno 中使用 ORM 进行数据库操作?

介绍

ORM (Object Relational Mapping) 是一种将面向对象语言中的对象模型映射到关系数据库中的技术。使用 ORM 可以简化数据库操作,同时提高代码的可读性和可维护性。在 Deno 中使用 ORM 进行数据库操作可以让我们更加专注于业务逻辑和数据处理,而不必关心底层数据库操作细节。

在本文中,我们将介绍如何使用 Deno 中的 ORM 库,来进行数据库操作。

必要的准备

在开始使用 ORM 库之前,我们需要完成以下准备工作:

  • 安装 Deno 运行时环境
  • 安装相关依赖
  • 准备数据库环境

我们可以使用如下命令安装 Deno:

$ curl -fsSL https://deno.land/x/install/install.sh | sh

然后使用如下命令安装相关依赖:

$ deno install -Af --unstable https://deno.land/x/denodb/cli.ts

在此之前,我们还需要准备好数据库环境。这里我们选用 MySQL 数据库,你可以选择自己喜欢的数据库。

安装 ORM 库

Deno 中有几个 ORM 库可供选择,我们这里选用了 DenoDB。使用 DenoDB 不需要在代码中编写 SQL 语句,可以直接向数据库中插入、更新、删除、查询数据。

我们可以使用如下命令安装 DenoDB:

$ deno install --allow-net --allow-read --allow-write --unstable https://deno.land/x/denodb/mod.ts

连接到数据库

首先,让我们创建一个新文件 index.ts 并连接到数据库。我们可以使用以下代码来连接到 MySQL 数据库:

import { Database } from 'https://deno.land/x/denodb/mod.ts'

const db = new Database({
  dialect: 'mysql',
  host: 'localhost',
  username: 'root',
  password: 'password',
  database: 'database',
})

该代码片段中,我们使用 Database 类连接到了 MySQL 数据库,其中:

  • dialect 指定了数据库类型,这里是 MySQL;
  • host 指定了数据库服务器地址;
  • usernamepassword 指定了访问数据库时的用户名和密码;
  • database 指定了要连接的数据库名称。

定义模型类

接下来,我们需要定义一个模型类来表明在数据库中的表结构。这里我们创建一个 User 类,并定义其中几个属性。

import { Model, DataTypes } from 'https://deno.land/x/denodb/mod.ts'

class User extends Model {
  static table = 'users'
  static timestamps = true

  static fields = {
    id: { primaryKey: true, autoIncrement: true },
    username: DataTypes.STRING,
    email: DataTypes.STRING,
    password: DataTypes.STRING,
  }
}

User.defineIndexes([
  { fields: ['username'], unique: true },
  { fields: ['email'], unique: true },
])

db.link([User])
await db.sync()

该代码片段中,我们使用 Model 类定义了一个 User 类,其中:

  • table 指定了这个类对应的数据库表;
  • timestamps 表示在第一次插入记录时会自动生成创建时间和更新时间;
  • fields 定义了该表中的字段和类型。

此外,我们还定义了两个索引来确保 usernameemail 字段的唯一性,尝试插入重复的值时会抛出异常。

最后,我们使用 db.link 方法将模型类链接到数据库,使用 await db.sync() 方法同步模型到数据库中。

操作数据库

我们创建了模型类之后,现在我们就可以向数据库中插入、更新、删除、查询数据了。

插入数据

const user = new User()
user.username = 'user1'
user.email = 'user1@example.com'
user.password = 'password1'
await user.save()

通过创建一个 User 对象,然后给各属性赋值,并使用 save() 方法将其保存到数据库中。

更新数据

const user = await User.findOne({ email: 'user1@example.com' })
if (user) {
  user.password = 'newpassword'
  await user.save()
}

我们可以通过 findOne() 方法查询到某条记录,并修改它的属性值,最后使用 save() 方法将修改保存到数据库中。

删除数据

const user = await User.findOne({ email: 'user1@example.com' })
await user?.delete()

我们通过 findOne() 查找到某条记录,并使用 delete() 删除它。

查询数据

const users = await User.select('username', 'email').all()
console.log(users)

我们可以使用 select() 方法,选择要查询的字段,然后使用 all() 获取所有记录。

总结

在本文中,我们介绍了如何在 Deno 中使用 ORM 库进行数据库操作。具体来说,我们使用了 DenoDB 来连接 MySQL 数据库,定义了一个模型类并在其中定义了表结构。我们还演示了如何向数据库中插入、更新、删除、查询数据。我们相信,掌握了这些基本概念后,你将可以更加自信地使用 ORM 来进行数据库操作。

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