Zum Hauptinhalt springen
Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

Effiziente Nutzung des Query Builders

Vermeidung des N+1-Query-Problems

Das N+1-Query-Problem tritt auf, wenn das System zu viele Unterabfragen für jede abgerufene Datenzeile ausführt.

Um dies zu vermeiden, kannst du leftJoinAndSelect oder innerJoinAndSelect verwenden, um Tabellen in einer einzigen Abfrage zu kombinieren, anstatt mehrere Abfragen auszuführen.

const users = await dataSource
.getRepository(User)
.createQueryBuilder("user")
.leftJoinAndSelect("user.posts", "post")
.getMany()

Hier hilft leftJoinAndSelect, alle Benutzerbeiträge in einer Abfrage abzurufen statt in vielen kleinen Abfragen.

Verwendung von getRawMany() bei Rohdatenbedarf

Falls keine vollständigen Objekte benötigt werden, kannst du getRawMany() verwenden, um Rohdaten abzurufen und zu vermeiden, dass TypeORM zu viele Informationen verarbeitet.

const rawPosts = await dataSource
.getRepository(Post)
.createQueryBuilder("post")
.select("post.title, post.createdAt")
.getRawMany()

Feldbeschränkung mit select

Um den Speicherverbrauch zu optimieren und unnötige Daten zu reduzieren, wähle nur benötigte Felder mittels select aus.

const users = await dataSource
.getRepository(User)
.createQueryBuilder("user")
.select(["user.name", "user.email"])
.getMany()