TypeScript 学习笔记(九):TypeScript 与数据库的结合应用

1. 引言

在前几篇学习笔记中,我们探讨了 TypeScript 的基础知识、前后端框架的结合应用以及测试与调试技巧。本篇将重点介绍 TypeScript 与数据库的结合应用,特别是如何使用 TypeScript 访问和操作数据库(如 MySQL 和 MongoDB),并确保类型安全和数据一致性。

2. TypeScript 与 MySQL

MySQL 是一种流行的关系型数据库管理系统。我们可以使用 TypeORM 或 Sequelize 等 ORM 工具与 TypeScript 结合使用。

2.1 使用 TypeORM 连接 MySQL

TypeORM 是一个基于 TypeScript 的 ORM,支持 MySQL、PostgreSQL 等多个数据库。

2.1.1 安装 TypeORM 和 MySQL

首先,安装 TypeORM、MySQL 以及 TypeScript 必需的依赖。

npm install typeorm reflect-metadata mysql2
npm install typescript ts-node @types/node --save-dev
2.1.2 配置 TypeORM

在项目根目录下创建 ormconfig.json 配置文件。

{
  "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "username": "root",
  "password": "password",
  "database": "test",
  "synchronize": true,
  "logging": false,
  "entities": ["src/entity/**/*.ts"]
}
2.1.3 创建实体

创建一个用户实体。

// src/entity/User.ts
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';

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

  @Column()
  firstName: string;

  @Column()
  lastName: string;

  @Column()
  age: number;
}
2.1.4 编写数据库操作代码

使用 TypeORM 连接数据库并进行基本的 CRUD 操作。

// src/index.ts
import 'reflect-metadata';
import { createConnection } from 'typeorm';
import { User } from './entity/User';

createConnection().then(async connection => {
  console.log('Connected to MySQL database');

  const userRepository = connection.getRepository(User);

  // 创建用户
  const user = new User();
  user.firstName = 'John';
  user.lastName = 'Doe';
  user.age = 25;
  await userRepository.save(user);
  console.log('User has been saved');

  // 查询用户
  const users = await userRepository.find();
  console.log('All users:', users);

}).catch(error => console.log(error));
2.1.5 运行代码

使用 ts-node 运行 TypeScript 代码。

npx ts-node src/index.ts

3. TypeScript 与 MongoDB

MongoDB 是一种流行的 NoSQL 数据库,适用于存储文档数据。我们可以使用 Mongoose 与 TypeScript 结合使用。

3.1 使用 Mongoose 连接 MongoDB

Mongoose 是一个基于 Node.js 的 MongoDB ODM(对象文档映射),提供了强大的文档模型和验证功能。

3.1.1 安装 Mongoose

首先,安装 Mongoose 及其 TypeScript 类型定义文件。

npm install mongoose @types/mongoose
3.1.2 创建模型

定义一个用户模型。

// src/models/User.ts
import { Schema, model } from 'mongoose';

interface IUser {
  firstName: string;
  lastName: string;
  age: number;
}

const userSchema = new Schema<IUser>({
  firstName: { type: String, required: true },
  lastName: { type: String, required: true },
  age: { type: Number, required: true }
});

const User = model<IUser>('User', userSchema);

export default User;
3.1.3 编写数据库操作代码

使用 Mongoose 连接 MongoDB 并进行基本的 CRUD 操作。

// src/index.ts
import mongoose from 'mongoose';
import User from './models/User';

async function main() {
  await mongoose.connect('mongodb://localhost:27017/test');
  console.log('Connected to MongoDB');

  // 创建用户
  const user = new User({
    firstName: 'Jane',
    lastName: 'Doe',
    age: 30
  });
  await user.save();
  console.log('User has been saved');

  // 查询用户
  const users = await User.find();
  console.log('All users:', users);
}

main().catch(err => console.log(err));
3.1.4 运行代码

使用 ts-node 运行 TypeScript 代码。

npx ts-node src/index.ts

4. 使用环境变量管理配置

在实际项目中,数据库连接信息和其他敏感配置通常通过环境变量管理。

4.1 安装 dotenv

安装 dotenv 库,用于加载环境变量。

npm install dotenv
4.2 配置环境变量

在项目根目录下创建 .env 文件,存储数据库连接信息。

DB_HOST=localhost
DB_PORT=3306
DB_USERNAME=root
DB_PASSWORD=password
DB_DATABASE=test
4.3 加载环境变量

在代码中加载环境变量。

// src/index.ts
import 'dotenv/config';
import { createConnection } from 'typeorm';
import { User } from './entity/User';

createConnection({
  type: 'mysql',
  host: process.env.DB_HOST,
  port: parseInt(process.env.DB_PORT || '3306', 10),
  username: process.env.DB_USERNAME,
  password: process.env.DB_PASSWORD,
  database: process.env.DB_DATABASE,
  synchronize: true,
  logging: false,
  entities: [User]
}).then(async connection => {
  console.log('Connected to MySQL database');

  const userRepository = connection.getRepository(User);

  // 创建用户
  const user = new User();
  user.firstName = 'John';
  user.lastName = 'Doe';
  user.age = 25;
  await userRepository.save(user);
  console.log('User has been saved');

  // 查询用户
  const users = await userRepository.find();
  console.log('All users:', users);

}).catch(error => console.log(error));

5. 结论

在本篇学习笔记中,我们探讨了 TypeScript 与数据库的结合应用,特别是如何使用 TypeORM 访问 MySQL 数据库,以及如何使用 Mongoose 访问 MongoDB 数据库。同时,我们还介绍了如何使用环境变量管理配置,通过掌握这些知识,你可以在实际项目中更好地利用 TypeScript 和数据库的强大功能,提升开发效率和代码质量。

下一篇学习笔记将介绍 TypeScript 与 GraphQL 的结合应用,希望你能继续关注本系列的学习笔记,进一步提升 TypeScript 编程技能。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Evaporator Core

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值