使用 Fastify 框架实现 TypeORM 对 MySQL 的操作

在前端开发中,ORM(Object-Relational Mapping)框架可以帮助开发者更方便地操作数据库,而 TypeORM 是一个支持 TypeScript 的 ORM 框架,能够支持多种数据库,包括 MySQL、PostgreSQL、SQLite 等。本文将介绍如何使用 Fastify 框架来实现 TypeORM 对 MySQL 的操作。

准备工作

在使用 TypeORM 前,需要先安装 MySQL 数据库,并创建一个数据库和表。创建表的 SQL 语句如下:

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `age` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

同时,我们也需要安装 TypeORM 和 Fastify:

npm install typeorm fastify fastify-cors mysql2 reflect-metadata

创建实体类

在 TypeORM 中,实体类对应数据库中的表。我们需要创建一个 User 实体类,代码如下:

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

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

  @Column()
  name: string;

  @Column()
  age: number;
}

在该类中,使用 @Entity() 装饰器来表示该类是一个实体类,使用 @PrimaryGeneratedColumn() 装饰器来表示该字段是主键。同时,使用 @Column() 装饰器来表示该字段对应数据库中的列。

创建 TypeORM 连接

在使用 TypeORM 前,需要先创建一个数据库连接。我们可以在 app.js 中创建连接,代码如下:

import { createConnection } from 'typeorm';
import { User } from './entity/User';

const app = require('fastify')();

createConnection({
  type: 'mysql',
  host: 'localhost',
  port: 3306,
  username: 'root',
  password: 'password',
  database: 'test',
  entities: [
    User,
  ],
}).then(() => {
  console.log('Database connection established.');
}).catch((error) => {
  console.log('Database connection failed: ', error);
});

在上述代码中,我们使用 createConnection() 方法来创建连接,其中需要传入数据库的连接信息和实体类。此外,我们使用 Promise 来处理连接成功和失败的情况。

创建路由

在 Fastify 中,我们可以通过 app.get()app.post() 方法来创建路由。我们需要创建一个 /users 路由,用于获取用户列表和添加用户。代码如下:

app.get('/users', async (request, reply) => {
  const userRepository = getRepository(User);
  const users = await userRepository.find();

  reply.send(users);
});

app.post('/users', async (request, reply) => {
  const userRepository = getRepository(User);
  const user = new User();
  user.name = request.body.name;
  user.age = request.body.age;
  const result = await userRepository.save(user);

  reply.send(result);
});

在上述代码中,我们使用 getRepository() 方法来获取 UserRepository,然后使用 find() 方法来获取用户列表,使用 save() 方法来添加用户。

启动应用

在所有准备工作完成后,我们可以使用 app.listen() 方法来启动应用,代码如下:

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

总结

通过本文的介绍,我们学习了如何使用 Fastify 框架来实现 TypeORM 对 MySQL 的操作。在实际开发中,我们可以使用 TypeORM 来操作多种数据库,并且可以使用 TypeScript 来提高代码的可读性和可维护性。同时,Fastify 框架也提供了高性能的 HTTP 服务器,可以帮助我们快速构建 Web 应用程序。

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


纠错
反馈