Was macht typeorm?
Richtlinien für die Entwicklung mit TypeORM, einem voll ausgestatteten ORM für TypeScript und JavaScript, das mehrere Datenbanken unterstützt
Übersicht
TypeORM ist ein ORM, das mit TypeScript und JavaScript funktioniert und eine breite Palette von Datenbanken wie PostgreSQL, MySQL, MariaDB, SQLite und MS SQL Server unterstützt. Es bietet deklarative Entitätendefinitionen, Migrationen, Relationen und eine leistungsstarke Query Builder API.
Grundlegende Richtlinien
Entitätendefinitionen
Entitäten werden mit Klassen und Dekorateuren definiert. Verwende immer den Dekorator @Entity() für die Klasse und @PrimaryGeneratedColumn() für Primärschlüssel.
import { Entity, PrimaryGeneratedColumn, Column } from "typeorm";
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column({ unique: true })
email: string;
}
Relationen
Verwende die Dekorateure @OneToOne, @OneToMany, @ManyToOne und @ManyToMany für Relationen. Gib immer die Zielentität und die inverse Seite an.
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, JoinColumn } from "typeorm";
@Entity()
export class Photo {
@PrimaryGeneratedColumn()
id: number;
@Column()
url: string;
@ManyToOne(() => User, (user) => user.photos)
@JoinColumn()
user: User;
}
Migrationen
Migrationen werden mit der TypeORM CLI erstellt. Verwende typeorm migration:create -n MigrationName für neue Migrationen und typeorm migration:run zum Ausführen.
npx typeorm migration:create -n CreateUserTable
Verbindungskonfiguration
Verwende eine Konfigurationsdatei (z. B. ormconfig.json oder data-source.ts), um die Datenbankverbindung zu definieren. Verwende Umgebungsvariablen für sensible Daten.
import { DataSource } from "typeorm";
export const AppDataSource = new DataSource({
type: "postgres",
host: process.env.DB_HOST,
port: parseInt(process.env.DB_PORT || "5432"),
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
entities: [__dirname + "/entities/**/*{.ts,.js}"],
migrations: [__dirname + "/migrations/**/*{.ts,.js}"],
synchronize: false,
});
Weitere Informationen
Weitere Details findest du in der offiziellen TypeORM Dokumentation.