📅  最后修改于: 2023-12-03 15:35:24.062000             🧑  作者: Mango
TypeORM 是一个基于 TypeScript 的 ORM 框架,支持多种数据库,并为你提供了很好的工具与灵活的 API,用于轻松地操作数据库。
在本文中,我们将创建一个简单的项目来使用 TypeORM 框架,其中我们将使用 SQLite 数据库作为持久化存储。
首先,我们需要创建一个新的项目并初始化 package.json
文件。使用 npm init
命令创建新包并填写相应选项。
接下来,我们需要在项目中安装 TypeORM 和 SQLite 驱动程序。运行以下命令来进行安装:
npm install typeorm reflect-metadata sqlite3 @types/node --save
@types/node
可能已经成为项目的依赖项,是为了使 TypeScript 与 Node.js 的运行时交互更好而安装的。reflect-metadata
是 TypeORM 所需的库。
我们需要为 TypeORM 配置我们的 SQLite 数据库。在项目根目录下创建一个新的文件 ormconfig.json
,并添加以下内容:
{
"type": "sqlite",
"database": "database.sqlite",
"synchronize": true,
"logging": false,
"entities": [
"src/entity/**/*.ts"
],
"migrations": [
"src/migration/**/*.ts"
],
"subscribers": [
"src/subscriber/**/*.ts"
],
"cli": {
"entitiesDir": "src/entity",
"migrationsDir": "src/migration",
"subscribersDir": "src/subscriber"
}
}
我们在这里指定了 SQLite 数据库的类型,它的名称以及其他 TypeORM 配置。
实体是在我们的数据库中存在的模型。这是用于创建实体的模板:
import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
@Entity()
export class ExampleEntity {
@PrimaryGeneratedColumn()
id!: number;
@Column()
name!: string;
@Column()
description!: string;
}
在这里,我们创建了一个 ExampleEntity
实体,它有三个属性:
id
- 主键自动生成的数字列name
- 字符串列description
- 字符串列不要忘记将实体添加到 ormconfig.json
文件中。
现在,我们可以连接到数据库并运行我们的这个简单的项目:
import 'reflect-metadata';
import { createConnection } from 'typeorm';
import { ExampleEntity } from './entity/ExampleEntity';
createConnection().then(async (connection) => {
const exampleEntity = new ExampleEntity();
exampleEntity.name = 'Example';
exampleEntity.description = 'An example entity';
await connection.manager.save(exampleEntity);
console.log('Example entity has been saved.');
await connection.close();
}).catch((error) => console.log(error));
在这个项目中,我们创建了一个数据库连接并将 ExampleEntity
实体保存到数据库中。重要的是要注意,我们必须使用 await
等待 manager.save
方法完成,因为保存实体是一个异步的操作。最后,我们关闭数据库连接。
最后,我们可以使用 npm run build
构建项目,然后用 npm start
命令运行它。如果没有错误,则输出将包含“Example entity has been saved.”消息。
我们已创建了一个基于 TypeORM 的简单项目,并使用 SQLite 数据库存储了一个实体。TypeORM 提供了很多有用的工具和灵活的 API,用于更复杂的数据库操作。这是一个强大的框架,可以帮助开发人员轻松地处理数据库相关任务。