fontcolor_theme
Deepkit ORM

Events

Events sind eine Möglichkeit, in Deepkit ORM einzuhaken und ermöglichen es Ihnen, leistungsfähige Plugins zu schreiben. Es gibt zwei Kategorien von Events: Query-Events und Unit-of-Work-Events. Plugin-Autoren verwenden typischerweise beide, um beide Wege der Datenmanipulation zu unterstützen.

Events werden über Database.listen mit einem Event-Token registriert. Kurzlebige Event-Listener können auch an Sessions registriert werden.

import { Query, Database } from '@deepkit/orm';

const database = new Database(...);
database.listen(Query.onFetch, async (event) => {
});

const session = database.createSession();

//wird nur für diese bestimmte Session ausgeführt
session.eventDispatcher.listen(Query.onFetch, async (event) => {
});

Query-Events

Query-Events werden ausgelöst, wenn eine Query über Database.query() oder Session.query() ausgeführt wird.

Jedes Event hat eigene zusätzliche Properties, wie z. B. den Entity-Typ, die Query selbst und die Datenbank-Session. Sie können die Query überschreiben, indem Sie eine neue Query auf Event.query setzen.

import { Query, Database } from '@deepkit/orm';

const database = new Database(...);

const unsubscribe = database.listen(Query.onFetch, async event => {
    //überschreibt die Query des Benutzers, sodass etwas anderes ausgeführt wird.
    event.query = event.query.filterField('fieldName', 123);
});

//um den Hook zu entfernen, unsubscribe aufrufen
unsubscribe();

"Query" hat mehrere Event-Tokens:

Query.onFetchWenn Objekte über find()/findOne()/etc abgerufen wurden
Query.onDeletePreBevor Objekte über deleteMany/deleteOne() gelöscht werden
Query.onDeletePostNachdem Objekte über deleteMany/deleteOne() gelöscht wurden
Query.onPatchPreBevor Objekte über patchMany/patchOne() gepatcht/aktualisiert werden
Query.onPatchPostNachdem Objekte über patchMany/patchOne() gepatcht/aktualisiert wurden

Unit-of-Work-Events

Unit-of-Work-Events werden ausgelöst, wenn eine neue Session Änderungen übermittelt.

DatabaseSession.onUpdatePreAusgelöst unmittelbar bevor das Objekt DatabaseSession eine Update-Operation an den Datenbank-Datensätzen startet.
DatabaseSession.onUpdatePostAusgelöst unmittelbar nachdem das Objekt DatabaseSession die Update-Operation erfolgreich abgeschlossen hat.
DatabaseSession.onInsertPreAusgelöst unmittelbar bevor das Objekt DatabaseSession das Einfügen neuer Datensätze in die Datenbank startet.
DatabaseSession.onInsertPostAusgelöst unmittelbar nachdem das Objekt DatabaseSession die neuen Datensätze erfolgreich eingefügt hat.
DatabaseSession.onDeletePreAusgelöst unmittelbar bevor das Objekt DatabaseSession eine Delete-Operation zum Entfernen von Datensätzen beginnt.
DatabaseSession.onDeletePostAusgelöst unmittelbar nachdem das Objekt DatabaseSession die Delete-Operation abgeschlossen hat.
DatabaseSession.onCommitPreAusgelöst unmittelbar bevor das Objekt DatabaseSession während der Session vorgenommene Änderungen in der Datenbank committet.
English中文 (Chinese)한국어 (Korean)日本語 (Japanese)Deutsch (German)