在前端开发中,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