TypeScript 数据库操作:面向初学者的 PostgreSQL 与 MongoDB 指南

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

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

开始课程
```html

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



TypeScript 是 JavaScript 的强类型超集,它为代码增加了可靠性和可预测性。在处理数据库时,TypeScript 特别有用:您可以为实体定义类型,在编译阶段检查查询的正确性,并避免许多运行时错误。在本文中,我们将探讨如何连接到两种最流行的数据库——关系型 PostgreSQL 和文档型 MongoDB——并执行基本的数据操作。本材料面向熟悉 TypeScript 基础的初学者开发者。



环境准备与依赖安装



在编写代码之前,需要先配置项目。创建一个新目录并初始化项目:



mkdir ts-db-examplecd ts-db-examplenpm init -ynpm install typescript @types/node ts-node --save-devnpx tsc --init


现在安装用于处理数据库的库。对于 PostgreSQL,我们将使用 TypeORM(一个流行的、对 TypeScript 有良好支持的 ORM);对于 MongoDB,则使用 Mongoose(一个用于模式建模和操作 MongoDB 的库)。



npm install typeorm reflect-metadata pgnpm install mongoose


同时安装 Node.js 的类型定义以及 TypeORM 的配置:



npm install @types/node --save-dev


在 tsconfig.json 文件中,务必启用以下选项:



{  "compilerOptions": {    "target": "ES2020",    "module": "commonjs",    "outDir": "./dist",    "rootDir": "./src",    "strict": true,    "esModuleInterop": true,    "experimentalDecorators": true,    "emitDecoratorMetadata": true  }}


现在项目结构已准备就绪。创建 src 文件夹,并在其中创建用于处理每个数据库的文件。



通过 TypeORM 使用 PostgreSQL



配置连接



TypeORM 允许通过装饰器和实体来处理数据库。创建文件 src/postgres.ts 并配置到本地 PostgreSQL 数据库 ts_db 的连接:



import "reflect-metadata";import { DataSource } from "typeorm";

export const AppDataSource = new DataSource({ type: "postgres", host: "localhost", port: 5432, username: "postgres", password: "password", database: "ts_db", synchronize: true, // 自动创建表(仅用于开发环境) logging: false, entities: ["src/entity/**/*.ts"],});


创建实体



实体是一个类,它映射到数据库中的表。创建文件夹 src/entity 和文件 User.ts:



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

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

@Column({ length: 100 }) name: string;

@Column({ unique: true }) email: string;

@Column({ default: 18 }) age: number;}


执行 CRUD 操作



现在在文件 src/postgres-crud.ts 中编写用于创建、读取、更新和删除用户的函数:



import { AppDataSource } from "./postgres";import { User } from "./entity/User";

async function main() { await AppDataSource.initialize(); const userRepository = AppDataSource.getRepository(User);

// CREATE — 创建新用户 const newUser = userRepository.create({ name: "伊万·彼得罗夫", email: "ivan@example.com", age: 25, }); await userRepository.save(newUser); console.log("用户已创建:", newUser);

// READ — 读取所有用户 const allUsers = await userRepository.find(); console.log("所有用户:", allUsers);

// UPDATE — 更新 id=1 用户的年龄 const userToUpdate = ```

博客

书籍推荐