fontcolor_theme
Deepkit ORM

이벤트

이벤트는 Deepkit ORM에 hook 하여 강력한 플러그인을 작성할 수 있는 방법입니다. 이벤트에는 두 가지 카테고리가 있습니다: Query 이벤트와 Unit-of-Work 이벤트. 플러그인 작성자는 일반적으로 둘 다를 사용하여 데이터를 조작하는 두 가지 방식을 모두 지원합니다.

이벤트는 Database.listen을 통해 event token에 등록됩니다. 수명이 짧은 이벤트 리스너는 세션에도 등록할 수 있습니다.

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

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

const session = database.createSession();

//이 특정 세션에서만 실행됩니다
session.eventDispatcher.listen(Query.onFetch, async (event) => {
});

Query 이벤트

Query 이벤트는 Database.query() 또는 Session.query()를 통해 query가 실행될 때 트리거됩니다.

각 이벤트에는 entity 타입, query 자체, 데이터베이스 세션 등 고유한 추가 속성이 있습니다. Event.query에 새로운 query를 설정하여 query를 override할 수 있습니다.

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

const database = new Database(...);

const unsubscribe = database.listen(Query.onFetch, async event => {
    //사용자의 쿼리를 덮어써서 다른 것이 실행되도록 합니다.
    event.query = event.query.filterField('fieldName', 123);
});

//hook을 제거하려면 unsubscribe를 호출하세요
unsubscribe();

"Query"에는 여러 Event token이 있습니다:

Query.onFetchfind()/findOne()/등을 통해 객체가 조회되었을 때
Query.onDeletePredeleteMany/deleteOne()를 통해 객체가 삭제되기 전
Query.onDeletePostdeleteMany/deleteOne()를 통해 객체가 삭제된 후
Query.onPatchPrepatchMany/patchOne()를 통해 객체가 패치/업데이트되기 전
Query.onPatchPostpatchMany/patchOne()를 통해 객체가 패치/업데이트된 후

Unit Of Work 이벤트

Unit-of-Work 이벤트는 새로운 세션이 변경 사항을 제출할 때 트리거됩니다.

DatabaseSession.onUpdatePreDatabaseSession 객체가 데이터베이스 레코드에 대한 업데이트 작업을 시작하기 직전에 트리거됩니다.
DatabaseSession.onUpdatePostDatabaseSession 객체가 업데이트 작업을 성공적으로 완료한 직후 트리거됩니다.
DatabaseSession.onInsertPreDatabaseSession 객체가 새 레코드를 데이터베이스에 삽입하기 시작하기 직전에 트리거됩니다.
DatabaseSession.onInsertPostDatabaseSession 객체가 새 레코드를 성공적으로 삽입한 직후 트리거됩니다.
DatabaseSession.onDeletePreDatabaseSession 객체가 데이터베이스에서 레코드를 삭제하기 시작하기 직전에 트리거됩니다.
DatabaseSession.onDeletePostDatabaseSession 객체가 삭제 작업을 완료한 직후 트리거됩니다.
DatabaseSession.onCommitPreDatabaseSession 객체가 세션 동안 이루어진 변경 사항을 데이터베이스에 커밋하기 직전에 트리거됩니다.
English中文 (Chinese)한국어 (Korean)日本語 (Japanese)Deutsch (German)