📜  讨论TypeORM(1)

📅  最后修改于: 2023-12-03 14:57:37.379000             🧑  作者: Mango

TypeORM讨论

介绍

TypeORM是一款支持Typescript的ORM框架,可用于控制PostgreSQL、MySQL、MariaDB、SQLite、MS SQL Server等多种数据库。它具有实现数据表关系的强大功能,包括一对一、一对多、多对一和多对多,并且支持Column、Entity、Repository等等。此外,它提供了强大的查询构造器(Query Builder)方式来更加方便的查询数据。

安装

使用npm可以在命令行中进行安装:

npm install typeorm --save
实现
Entity

在TypeORM中,实现数据表关系需要定义一个Entity来映射数据库表。Entity是一种装饰器(decorator),定义了数据库表的名称(table name)、字段(column)以及它们之间的关系(relation)。一个实体通常会映射为一个具体的数据表。

以下是一个示例:

import { Entity, Column, PrimaryGeneratedColumn, OneToMany } from 'typeorm';
import { Order } from './Order';

@Entity()
export class User {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    name: string;

    @OneToMany(type => Order, order => order.user)
    orders: Order[];
}
Repository

TypeORM提供了Repository来操纵数据表。Repository类似于数据库操作中的DAO(Data Access Object),提供了各种针对表的操作方法,例如获取、创建、修改、删除、统计等。它还支持各种查询构造器,例如find、findOne、andWhere、orWhere等,以便能够更加方便地查询出所需要的数据。

以下是示例:

import { getRepository } from 'typeorm';
import { User } from './entity/User';

const userRepository = getRepository(User);

const users = await userRepository.find();
const user = await userRepository.findOne(1);
const count = await userRepository.count();
Connection

一个数据库连接(connection)通常代表着与一个特定数据库的长连接,TypeORM提供了Connection来封装这些操作。Connection包含了一个EntityManger和一个QueryBuilder,它们分别被用于处理Entity实例和QueryBuilder实例,以便于对数据库的操作。

以下是示例:

import { createConnection } from 'typeorm';

await createConnection({
    type: 'postgres',
    host: 'localhost',
    port: 5432,
    username: 'user',
    password: 'pass',
    database: 'test',
    entities: [
        'dist/entity/**/*.js'
    ],
    synchronize: true,
    logging: false
});
总结

TypeORM是一个功能强大且易于使用的ORM框架,可用于控制多种类型的数据库。它提供了许多实用的方法,例如查询构造器、Repository和Connection等,以便于满足程序员的需求。现在,你可以使用Node.js和TypeORM来从数据库中更加便捷地检索数据了。