如何使用 Fastify 和 Typeorm Node.js Connect

简介

Fastify 是一个快速、低开销、功能齐全的 Web 框架,由其灵活性,用户可对其进行高度定制。Typeorm 可以运行在浏览器、Node.js、Cordova、PhoneGap、React Native 等各种平台上,并且支持 TypeScript。这篇文章将带你了解如何使用 Fastify 和 Typeorm 连接 Node.js。

安装

首先,我们需要使用以下命令安装 Fastify 和 Typeorm:

npm install fastify typeorm reflect-metadata

连接数据库

在代码中,我们需要导入 Typeorm:

import { createConnection } from "typeorm";

然后,我们可以使用 Typeorm 的 createConnection 函数来连接数据库:

createConnection({
  type: "mysql",
  host: "localhost",
  port: 3306,
  username: "root",
  password: "root",
  database: "my_db",
  entities: [__dirname + "/entities/*.js"],
  synchronize: true,
})
  .then(() => {
    console.log("Database connection established.");
  })
  .catch((error) => {
    console.log("Database connection failed.");
    console.log(error);
  });

以上代码会尝试连接一个 MySQL 数据库,配置项中的 entities 属性则用来指定需要创建的实体类。

创建实体类

在 Typeorm 中,我们使用实体类来表示数据库中的表。在这个例子中,我们将创建一个用户表:

import { Entity, Column, PrimaryGeneratedColumn } from "typeorm";

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;

  @Column()
  email: string;

  @Column({ default: true })
  isActive: boolean;
}

以上代码中,我们使用 @Entity 装饰器来定义实体类,使用 @PrimaryGeneratedColumn@Column 装饰器来定义列属性。

使用 Fastify 创建路由

接下来,我们将使用 Fastify 创建一个路由处理 HTTP 请求:

import * as fastify from "fastify";
import { UserController } from "./controllers/UserController";

const app = fastify({ logger: true });

app.register(UserController);

app.listen(3000, (err, address) => {
  if (err) {
    console.error(err);
    process.exit(1);
  }
  console.log(`Server listening at ${address}`);
});

在上述代码中,我们使用 fastify 模块来创建一个应用程序实例,并使用 UserController 注册路由处理器。

创建控制器

在 Node.js 中,我们使用控制器来解析路由,处理 HTTP 请求以及返回 HTTP 响应结果。以下是 UserController 的代码:

import { Controller, Get } from "fastify-decorators";
import { getRepository } from "typeorm";
import { User } from "../entities/User";

@Controller("/users")
export class UserController {
  @Get("/")
  async getAll() {
    const userRepository = getRepository(User);
    const users = await userRepository.find();
    return users;
  }
}

控制器使用 @Controller 装饰器定义了路由路径。此处我们定义了一个路由 /users,并在 @Get 装饰器中指定了 HTTP 方法为 GET。

getAll 方法中,我们使用 getRepository 函数从 Typeorm 中获取 User 实体类的仓库,并使用其 find 方法查找所有用户。

总结

这篇文章介绍了如何使用 Fastify 和 Typeorm 进行数据库连接、定义实体类和创建路由和控制器。我们希望读者在学习本文后可以顺利使用 Fastify 和 Typeorm 进行开发工作。

完整示例代码可以在以下链接获取:

https://github.com/Assistant-GitHub/Fastify-Typeorm-Mysql

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