在 TypeScript 中操作数据库:面向初学者的 PostgreSQL 和 MongoDB

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在 TypeScript 中操作数据库:面向初学者的 PostgreSQL 和 MongoDB

\n\n

现代 Web 开发几乎离不开数据库。TypeScript 作为 JavaScript 的强类型超集,为安全且可预测的数据操作提供了绝佳机会。在本文中,我们将详细讲解如何在 TypeScript 项目中连接并使用两种流行的数据库——关系型数据库 PostgreSQL 和文档型数据库 MongoDB。本文面向熟悉 TypeScript 和 Node.js 基础的初学者开发者。

\n\n

1. 环境准备与依赖安装

\n\n

开始之前,请确保您已安装 Node.js 和 npm。为了使用 TypeScript,请安装编译器和 Node.js 的类型定义:

\n\n
npm install -g typescript\nnpm init -y\nnpm install typescript @types/node --save-dev\nnpx tsc --init
\n\n

我们将使用以下流行的库来操作数据库:

\n
    \n
  • TypeORM — 用于 PostgreSQL(及其他 SQL 数据库)的 ORM
  • \n
  • Mongoose — 用于 MongoDB 的 ODM
  • \n
\n\n

将它们安装到您的项目中:

\n\n
npm install typeorm reflect-metadata pg\nnpm install mongoose
\n\n

别忘了在 tsconfig.json 文件中添加 "experimentalDecorators": true 和 "emitDecoratorMetadata": true。

\n\n

2. 通过 TypeORM 操作 PostgreSQL

\n\n

PostgreSQL 是一个强大的关系型数据库管理系统。TypeORM 允许您通过实体(entities)和仓库(repositories)来操作它,从而使代码清晰且类型安全。

\n\n

2.1. 创建连接与实体

\n\n

创建文件 data-source.ts 来配置连接:

\n\n
import { DataSource } from "typeorm";\n\nexport const AppDataSource = new DataSource({\n    type: "postgres",\n    host: "localhost",\n    port: 5432,\n    username: "your_user",\n    password: "your_password",\n    database: "your_db",\n    synchronize: true,\n    logging: false,\n    entities: ["src/entity/**/*.ts"],\n});
\n\n

现在,在文件 src/entity/User.ts 中创建实体 User:

\n\n
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";\n\n@Entity()\nexport class User {\n    @PrimaryGeneratedColumn()\n    id: number;\n\n    @Column()\n    name: string;\n\n    @Column({ unique: true })\n    email: string;\n\n    @Column()\n    age: number;\n}
\n\n

2.2. 使用 TypeORM 进行 CRUD 操作

\n\n

创建和获取用户的示例:

\n\n
import { AppDataSource } from "./data-source";\nimport { User } from "./entity/User";\n\nasync function main() {\n    await AppDataSource.initialize();\n    const userRepository = AppDataSource.getRepository(User);\n\n    // 创建\n    const newUser = userRepository.create({\n        name: "伊万",\n        email: "ivan@example.com",\n        age: 25\n    });\n    await userRepository.save(newUser);\n    console.log("用户已创建:", newUser);\n\n    // 读取所有\n    const users = await userRepository.find();\n    console.log("所有用户:", users);\n\n    // 更新\n    await userRepository.update({ id: 1 }, { age: 26 });\n\n    // 删除\n    await userRepository.delete({ id: 1 });\n}\n\nmain().catch(console.error);
\n\n

TypeORM 会自动生成 SQL 查询,而 TypeScript 的类型系统可以在编译阶段防止错误。

\n\n

3. 通过 Mongoose 操作 MongoDB

\n\n

MongoDB 是一个 NoSQL 数据库,以类似 JSON 的格式存储数据。Mongoose 为 TypeScript 提供了模式定义和数据验证功能。

\n\n

3.1. 连接与定义模式

\n\n

创建文件 db.ts 用于连接:

\n\n
import mongoose from "mongoose";\n\nexport async function connectDB() {\n    await mongoose.connect("mongodb://localhost:27017/mydb");\n    console.log("已连接到 MongoDB");\n}

博客

书籍推荐