Tento dokument byl přeložen umělou inteligencí. V případě nepřesností se prosím obraťte na anglickou verzi
Database je nástroj pro interakci s databází, který poskytuje NocoBase. Nabízí velmi pohodlné funkce pro práci s databázemi v no-code a low-code aplikacích. Aktuálně jsou podporovány tyto databáze:
V konstruktoru Database můžete nakonfigurovat připojení k databázi předáním parametru options.
Podrobné konfigurační parametry naleznete v části Konstruktor.
Database definuje strukturu databáze pomocí kolekce. Objekt kolekce představuje tabulku v databázi.
Jakmile je struktura databáze definována, můžete použít metodu sync() k její synchronizaci.
Podrobnější informace o používání kolekce naleznete v části Kolekce.
Database pracuje s daty prostřednictvím Repository.
Podrobnější informace o používání CRUD operací s daty naleznete v části Repository.
Podpis
constructor(options: DatabaseOptions)Vytvoří instanci databáze.
Parametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
options.host | string | 'localhost' | Hostitel databáze |
options.port | number | - | Port databázové služby, s výchozím portem odpovídajícím použité databázi |
options.username | string | - | Uživatelské jméno databáze |
options.password | string | - | Heslo databáze |
options.database | string | - | Název databáze |
options.dialect | string | 'mysql' | Typ databáze |
options.storage? | string | ':memory:' | Režim úložiště pro SQLite |
options.logging? | boolean | false | Zda povolit logování |
options.define? | Object | {} | Výchozí parametry definice tabulky |
options.tablePrefix? | string | '' | Rozšíření NocoBase, prefix názvu tabulky |
options.migrator? | UmzugOptions | {} | Rozšíření NocoBase, parametry související se správcem migrací, viz implementace Umzug |
addMigration()Přidá jeden migrační soubor.
Podpis
addMigration(options: MigrationItem)Parametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
options.name | string | - | Název migračního souboru |
options.context? | string | - | Kontext migračního souboru |
options.migration? | typeof Migration | - | Vlastní třída pro migrační soubor |
options.up | Function | - | Metoda up migračního souboru |
options.down | Function | - | Metoda down migračního souboru |
Příklad
addMigrations()Přidá migrační soubory z určeného adresáře.
Podpis
addMigrations(options: AddMigrationsOptions): voidParametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
options.directory | string | '' | Adresář, kde se nacházejí migrační soubory |
options.extensions | string[] | ['js', 'ts'] | Přípony souborů |
options.namespace? | string | '' | Jmenný prostor |
options.context? | Object | { db } | Kontext migračního souboru |
Příklad
inDialect()Zkontroluje, zda je aktuální typ databáze jedním z uvedených typů.
Podpis
inDialect(dialect: string[]): booleanParametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
dialect | string[] | - | Typ databáze, možné hodnoty jsou mysql/postgres/mariadb |
getTablePrefix()Získá prefix názvu tabulky z konfigurace.
Podpis
getTablePrefix(): stringcollection()Definuje kolekci. Toto volání je podobné metodě define v Sequelize, která vytváří strukturu tabulky pouze v paměti. Pro její trvalé uložení do databáze je potřeba zavolat metodu sync.
Podpis
collection(options: CollectionOptions): CollectionParametry
Všechny konfigurační parametry options jsou shodné s konstruktorem třídy kolekce, viz Kolekce.
Události
'beforeDefineCollection': Spustí se před definováním kolekce.'afterDefineCollection': Spustí se po definování kolekce.Příklad
getCollection()Získá definovanou kolekci.
Podpis
getCollection(name: string): CollectionParametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
name | string | - | Název kolekce |
Příklad
hasCollection()Zkontroluje, zda byla definována zadaná kolekce.
Podpis
hasCollection(name: string): booleanParametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
name | string | - | Název kolekce |
Příklad
removeCollection()Odebere definovanou kolekci. Odebere se pouze z paměti; pro trvalé uložení změny je potřeba zavolat metodu sync.
Podpis
removeCollection(name: string): voidParametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
name | string | - | Název kolekce |
Události
'beforeRemoveCollection': Spustí se před odebráním kolekce.'afterRemoveCollection': Spustí se po odebrání kolekce.Příklad
import()Importuje všechny soubory z adresáře jako konfigurace kolekcí do paměti.
Podpis
async import(options: { directory: string; extensions?: ImportFileExtension[] }): Promise<Map<string, Collection>>Parametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
options.directory | string | - | Cesta k adresáři pro import |
options.extensions | string[] | ['ts', 'js'] | Skenovat pro konkrétní přípony |
Příklad
Kolekce definovaná v souboru ./collections/books.ts vypadá takto:
Importujte příslušnou konfiguraci při načítání pluginu:
registerFieldTypes()Registruje vlastní typy polí.
Podpis
registerFieldTypes(fieldTypes: MapOf<typeof Field>): voidParametry
fieldTypes je pár klíč-hodnota, kde klíč je název typu pole a hodnota je třída typu pole.
Příklad
registerModels()Registruje vlastní třídy datových modelů.
Podpis
registerModels(models: MapOf<ModelStatic<any>>): voidParametry
models je pár klíč-hodnota, kde klíč je název datového modelu a hodnota je třída datového modelu.
Příklad
registerRepositories()Registruje vlastní třídy repozitářů.
Podpis
registerRepositories(repositories: MapOf<RepositoryType>): voidParametry
repositories je pár klíč-hodnota, kde klíč je název repozitáře a hodnota je třída repozitáře.
Příklad
registerOperators()Registruje vlastní operátory pro dotazování dat.
Podpis
registerOperators(operators: MapOf<OperatorFunc>)Parametry
operators je pár klíč-hodnota, kde klíč je název operátoru a hodnota je funkce, která generuje porovnávací výraz.
Příklad
getModel()Získá definovanou třídu datového modelu. Pokud nebyla dříve zaregistrována žádná vlastní třída modelu, vrátí se výchozí třída modelu Sequelize. Výchozí název je stejný jako název definované kolekce.
Podpis
getModel(name: string): ModelParametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
name | string | - | Název registrovaného modelu |
Příklad
Poznámka: Třída modelu získaná z kolekce není striktně shodná s registrovanou třídou modelu, ale dědí z ní. Jelikož se vlastnosti třídy modelu Sequelize mění během inicializace, NocoBase automaticky spravuje tento vztah dědičnosti. Kromě nerovnosti tříd lze všechny ostatní definice normálně používat.
getRepository()Získá vlastní třídu repozitáře. Pokud nebyla dříve zaregistrována žádná vlastní třída repozitáře, vrátí se výchozí třída repozitáře NocoBase. Výchozí název je stejný jako název definované kolekce.
Třídy repozitářů se primárně používají pro CRUD operace (vytváření, čtení, aktualizace, mazání) založené na datových modelech, viz Repository.
Podpis
getRepository(name: string): RepositorygetRepository(name: string, relationId?: string | number): RepositoryParametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
name | string | - | Název registrovaného repozitáře |
relationId | string | number | - | Hodnota cizího klíče pro relační data |
Pokud je název asociační, například 'tables.relations', vrátí se přidružená třída repozitáře. Pokud je poskytnut druhý parametr, repozitář bude při použití (dotazování, aktualizace atd.) vycházet z hodnoty cizího klíče relačních dat.
Příklad
Předpokládejme, že existují dvě kolekce, příspěvky a autoři, a kolekce příspěvků má cizí klíč odkazující na kolekci autorů:
on()Naslouchá databázovým událostem.
Podpis
on(event: string, listener: (...args: any[]) => void | Promise<void>): voidParametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
| event | string | - | Název události |
| listener | Function | - | Posluchač události |
Názvy událostí standardně podporují události modelu Sequelize. Pro globální události nasloucháte pomocí formátu názvu <sequelize_model_global_event>, a pro události jednoho modelu použijte formát <model_name>.<sequelize_model_event>.
Popisy parametrů a podrobné příklady všech vestavěných typů událostí naleznete v sekci Vestavěné události.
off()Odebere funkci posluchače události.
Podpis
off(name: string, listener: Function)Parametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
| name | string | - | Název události |
| listener | Function | - | Posluchač události |
Příklad
auth()Autentizace databázového připojení. Lze použít k zajištění, že aplikace navázala spojení s daty.
Podpis
auth(options: QueryOptions & { retry?: number } = {}): Promise<boolean>Parametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
options? | Object | - | Možnosti autentizace |
options.retry? | number | 10 | Počet opakování při selhání autentizace |
options.transaction? | Transaction | - | Objekt transakce |
options.logging? | boolean | Function | false | Zda tisknout logy |
Příklad
reconnect()Znovu připojí k databázi.
Příklad
closed()Zkontroluje, zda je databázové připojení uzavřeno.
Podpis
closed(): booleanclose()Uzavře databázové připojení. Ekvivalentní k sequelize.close().
sync()Synchronizuje strukturu databázové kolekce. Ekvivalentní k sequelize.sync(), parametry naleznete v dokumentaci Sequelize.
clean()Vyčistí databázi, čímž smaže všechny kolekce.
Podpis
clean(options: CleanOptions): Promise<void>Parametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
options.drop | boolean | false | Zda odstranit všechny kolekce |
options.skip | string[] | - | Konfigurace názvů kolekcí k přeskočení |
options.transaction | Transaction | - | Objekt transakce |
Příklad
Odebere všechny kolekce kromě kolekce users.
defineCollection()Vytvoří konfigurační obsah pro kolekci.
Podpis
defineCollection(name: string, config: CollectionOptions): CollectionOptionsParametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
collectionOptions | CollectionOptions | - | Stejné jako všechny parametry db.collection() |
Příklad
Pro konfigurační soubor kolekce, který má být importován pomocí db.import():
extendCollection()Rozšíří konfigurační obsah kolekce již v paměti, primárně pro obsah souborů importovaných metodou import(). Tato metoda je top-level metodou exportovanou balíčkem @nocobase/database a není volána přes instanci db. Lze také použít alias extend.
Podpis
extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): ExtendedCollectionOptionsParametry
| Parametr | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
collectionOptions | CollectionOptions | - | Stejné jako všechny parametry db.collection() |
mergeOptions? | MergeOptions | - | Parametry pro npm balíček deepmerge |
Příklad
Původní definice kolekce knih (books.ts):
Rozšířená definice kolekce knih (books.extend.ts):
Pokud jsou výše uvedené dva soubory importovány při volání import(), po opětovném rozšíření pomocí extend() bude kolekce knih obsahovat pole title a price.
Tato metoda je velmi užitečná pro rozšíření struktur kolekcí, které již byly definovány existujícími pluginy.
Databáze spouští následující události v odpovídajících fázích svého životního cyklu. Přihlášením k odběru pomocí metody on() můžete provádět specifické zpracování, které splňuje určité obchodní potřeby.
'beforeSync' / 'afterSync'Spustí se před a po synchronizaci nové konfigurační struktury kolekce (polí, indexů atd.) do databáze. Obvykle se spouští při provádění collection.sync() (interní volání) a obecně se používá pro zpracování logiky speciálních rozšíření polí.
Podpis
Typ
Příklad
'beforeValidate' / 'afterValidate'Před vytvořením nebo aktualizací dat probíhá proces validace dat založený na pravidlech definovaných v kolekci. Odpovídající události se spustí před a po validaci. K tomu dojde při volání repository.create() nebo repository.update().
Podpis
Typ
Příklad
'beforeCreate' / 'afterCreate'Odpovídající události se spustí před a po vytvoření záznamu. K tomu dojde při volání repository.create().
Podpis
Typ
Příklad
'beforeUpdate' / 'afterUpdate'Odpovídající události se spustí před a po aktualizaci záznamu. K tomu dojde při volání repository.update().
Podpis
Typ
Příklad
'beforeSave' / 'afterSave'Odpovídající události se spustí před a po vytvoření nebo aktualizaci záznamu. K tomu dojde při volání repository.create() nebo repository.update().
Podpis
Typ
Příklad
'beforeDestroy' / 'afterDestroy'Odpovídající události se spustí před a po smazání záznamu. K tomu dojde při volání repository.destroy().
Podpis
Typ
Příklad
'afterCreateWithAssociations'Tato událost se spustí po vytvoření záznamu s hierarchickými asociačními daty. K tomu dojde při volání repository.create().
Podpis
Typ
Příklad
'afterUpdateWithAssociations'Tato událost se spustí po aktualizaci záznamu s hierarchickými asociačními daty. K tomu dojde při volání repository.update().
Podpis
Typ
Příklad
'afterSaveWithAssociations'Tato událost se spustí po vytvoření nebo aktualizaci záznamu s hierarchickými asociačními daty. K tomu dojde při volání repository.create() nebo repository.update().
Podpis
Typ
Příklad
'beforeDefineCollection'Spustí se před definováním kolekce, například při volání db.collection().
Poznámka: Toto je synchronní událost.
Podpis
Typ
Příklad
'afterDefineCollection'Spustí se po definování kolekce, například při volání db.collection().
Poznámka: Toto je synchronní událost.
Podpis
Typ
Příklad
'beforeRemoveCollection' / 'afterRemoveCollection'Spustí se před a po odebrání kolekce z paměti, například při volání db.removeCollection().
Poznámka: Toto je synchronní událost.
Podpis
Typ
Příklad