Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen
Databasen är ett verktyg från NocoBase för databasinteraktion, som erbjuder smidiga funktioner för no-code- och low-code-applikationer. Databaserna som stöds för närvarande är:
I Database-konstruktorn kan ni konfigurera databasanslutningen genom att skicka in options-parametern.
För detaljerade konfigurationsparametrar, se Konstruktorn.
Database definierar databasstrukturen via en samling. Ett samling-objekt representerar en tabell i databasen.
När databasstrukturen är definierad kan ni använda metoden sync() för att synkronisera den.
För mer detaljerad användning av samling, se Samling.
Database hanterar data via Repository.
För mer detaljerad användning av CRUD-operationer, se Repository.
Signatur
constructor(options: DatabaseOptions)Skapar en databasinstans.
Parametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
options.host | string | 'localhost' | Databasvärd |
options.port | number | - | Databasens tjänstport, med en standardport som motsvarar den databas som används |
options.username | string | - | Databasens användarnamn |
options.password | string | - | Databasens lösenord |
options.database | string | - | Databasnamn |
options.dialect | string | 'mysql' | Databastyp |
options.storage? | string | ':memory:' | Lagringsläge för SQLite |
options.logging? | boolean | false | Om loggning ska aktiveras |
options.define? | Object | {} | Standardparametrar för tabelldefinition |
options.tablePrefix? | string | '' | NocoBase-tillägg, tabellnamnsprefix |
options.migrator? | UmzugOptions | {} | NocoBase-tillägg, parametrar relaterade till migreringshanteraren, se Umzug implementering |
addMigration()Lägger till en enskild migreringsfil.
Signatur
addMigration(options: MigrationItem)Parametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
options.name | string | - | Migreringsfilens namn |
options.context? | string | - | Migreringsfilens kontext |
options.migration? | typeof Migration | - | Anpassad klass för migreringsfilen |
options.up | Function | - | up-metoden för migreringsfilen |
options.down | Function | - | down-metoden för migreringsfilen |
Exempel
addMigrations()Lägger till migreringsfiler från en angiven katalog.
Signatur
addMigrations(options: AddMigrationsOptions): voidParametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
options.directory | string | '' | Katalog där migreringsfiler finns |
options.extensions | string[] | ['js', 'ts'] | Filändelser |
options.namespace? | string | '' | Namnrymd |
options.context? | Object | { db } | Migreringsfilens kontext |
Exempel
inDialect()Kontrollerar om den aktuella databastypen är en av de angivna typerna.
Signatur
inDialect(dialect: string[]): booleanParametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
dialect | string[] | - | Databastyp, möjliga värden är mysql/postgres/mariadb |
getTablePrefix()Hämtar tabellnamnsprefixet från konfigurationen.
Signatur
getTablePrefix(): stringcollection()Definierar en samling. Detta anrop liknar Sequenzes define-metod och skapar tabellstrukturen endast i minnet. För att spara den permanent i databasen måste ni anropa metoden sync().
Signatur
collection(options: CollectionOptions): CollectionParametrar
Alla options-konfigurationsparametrar överensstämmer med konstruktorn för samling-klassen, se Samling.
Händelser
'beforeDefineCollection': Utlöses innan en samling definieras.'afterDefineCollection': Utlöses efter att en samling har definierats.Exempel
getCollection()Hämtar en definierad samling.
Signatur
getCollection(name: string): CollectionParametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
name | string | - | samlingens namn |
Exempel
hasCollection()Kontrollerar om en angiven samling har definierats.
Signatur
hasCollection(name: string): booleanParametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
name | string | - | samlingens namn |
Exempel
removeCollection()Tar bort en definierad samling. Den tas endast bort från minnet; för att spara ändringen permanent måste ni anropa metoden sync().
Signatur
removeCollection(name: string): voidParametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
name | string | - | samlingens namn |
Händelser
'beforeRemoveCollection': Utlöses innan en samling tas bort.'afterRemoveCollection': Utlöses efter att en samling har tagits bort.Exempel
import()Importerar alla filer i en katalog som samlings-konfigurationer till minnet.
Signatur
async import(options: { directory: string; extensions?: ImportFileExtension[] }): Promise<Map<string, Collection>>Parametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
options.directory | string | - | Sökväg till katalogen som ska importeras |
options.extensions | string[] | ['ts', 'js'] | Sök efter specifika filändelser |
Exempel
samlingen som definieras i filen ./collections/books.ts är som följer:
Importera relevant konfiguration när plugin laddas:
registerFieldTypes()Registrerar anpassade fälttyper.
Signatur
registerFieldTypes(fieldTypes: MapOf<typeof Field>): voidParametrar
fieldTypes är ett nyckel-värde-par där nyckeln är fälttypens namn och värdet är fälttypklassen.
Exempel
registerModels()Registrerar anpassade datamodellklasser.
Signatur
registerModels(models: MapOf<ModelStatic<any>>): voidParametrar
models är ett nyckel-värde-par där nyckeln är modellnamnet och värdet är modellklassen.
Exempel
registerRepositories()Registrerar anpassade repository-klasser.
Signatur
registerRepositories(repositories: MapOf<RepositoryType>): voidParametrar
repositories är ett nyckel-värde-par där nyckeln är repository-namnet och värdet är repository-klassen.
Exempel
registerOperators()Registrerar anpassade datafrågeoperatorer.
Signatur
registerOperators(operators: MapOf<OperatorFunc>)Parametrar
operators är ett nyckel-värde-par där nyckeln är operatornamnet och värdet är funktionen som genererar jämförelseuttrycket.
Exempel
getModel()Hämtar en definierad datamodellklass. Om ingen anpassad modellklass tidigare har registrerats, kommer den att returnera Sequenzes standardmodellklass. Standardnamnet är detsamma som samlingens namn.
Signatur
getModel(name: string): ModelParametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
name | string | - | Registrerat modellnamn |
Exempel
Obs: Modellklassen som hämtas från en samling är inte strikt lika med den registrerade modellklassen, utan ärver från den. Eftersom Sequenzes modellklassers egenskaper ändras under initieringen, hanterar NocoBase automatiskt detta arvförhållande. Förutom att klasserna inte är exakt lika, kan alla andra definitioner användas normalt.
getRepository()Hämtar en anpassad repository-klass. Om ingen anpassad repository-klass tidigare har registrerats, kommer den att returnera NocoBase standard repository-klass. Standardnamnet är detsamma som samlingens namn.
Repository-klasser används främst för CRUD-operationer baserade på datamodeller, se Repository.
Signatur
getRepository(name: string): RepositorygetRepository(name: string, relationId?: string | number): RepositoryParametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
name | string | - | Registrerat repository-namn |
relationId | string | number | - | Främmande nyckelvärde för relationsdata |
När namnet är ett associationsnamn som 'tables.relations', kommer det att returnera den associerade repository-klassen. Om den andra parametern anges, kommer repositoryn att baseras på det främmande nyckelvärdet för relationsdata när den används (frågor, uppdateringar, etc.).
Exempel
Anta att det finns två samlingar, inlägg och författare, och att samlingen för inlägg har en främmande nyckel som pekar på samlingen för författare:
on()Lyssnar efter databas-händelser.
Signatur
on(event: string, listener: (...args: any[]) => void | Promise<void>): voidParametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
| event | string | - | Händelsenamn |
| listener | Function | - | Händelselyssnare |
Händelsenamnen stöder Sequenzes modellhändelser som standard. För globala händelser lyssnar ni med formatet <sequelize_model_global_event>, och för enskilda modellhändelser använder ni formatet <modellnamn>.<sequelize_model_event>.
För parameterbeskrivningar och detaljerade exempel på alla inbyggda händelsetyper, se avsnittet Inbyggda händelser.
off()Tar bort en händelselyssnarfunktion.
Signatur
off(name: string, listener: Function)Parametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
| name | string | - | Händelsenamn |
| listener | Function | - | Händelselyssnare |
Exempel
auth()Autentisering av databasanslutning. Kan användas för att säkerställa att applikationen har upprättat en anslutning till databasen.
Signatur
auth(options: QueryOptions & { retry?: number } = {}): Promise<boolean>Parametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
options? | Object | - | Autentiseringsalternativ |
options.retry? | number | 10 | Antal återförsök vid misslyckad autentisering |
options.transaction? | Transaction | - | Transaktionsobjekt |
options.logging? | boolean | Function | false | Om loggar ska skrivas ut |
Exempel
reconnect()Återansluter till databasen.
Exempel
closed()Kontrollerar om databasanslutningen är stängd.
Signatur
closed(): booleanclose()Stänger databasanslutningen. Motsvarar sequelize.close().
sync()Synkroniserar databasens samlings-struktur. Motsvarar sequelize.sync(), för parametrar se Sequelize-dokumentationen.
clean()Rensar databasen och tar bort alla samlingar.
Signatur
clean(options: CleanOptions): Promise<void>Parametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
options.drop | boolean | false | Om alla samlingar ska tas bort |
options.skip | string[] | - | Konfiguration av samlingsnamn att hoppa över |
options.transaction | Transaction | - | Transaktionsobjekt |
Exempel
Tar bort alla samlingar utom users-samlingen.
defineCollection()Skapar konfigurationsinnehållet för en samling.
Signatur
defineCollection(name: string, config: CollectionOptions): CollectionOptionsParametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
collectionOptions | CollectionOptions | - | Samma som alla parametrar för db.collection() |
Exempel
För en samlings-konfigurationsfil som ska importeras av db.import():
extendCollection()Utökar konfigurationsinnehållet för en samling som redan finns i minnet, främst för filinnehåll som importerats med metoden import(). Denna metod är en toppnivåmetod som exporteras av @nocobase/database-paketet och anropas inte via en db-instans. Aliaset extend kan också användas.
Signatur
extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): ExtendedCollectionOptionsParametrar
| Parameter | Typ | Standardvärde | Beskrivning |
|---|---|---|---|
collectionOptions | CollectionOptions | - | Samma som alla parametrar för db.collection() |
mergeOptions? | MergeOptions | - | Parametrar för npm-paketet deepmerge |
Exempel
Ursprunglig definition av samlingen för böcker (books.ts):
Utökad definition av samlingen för böcker (books.extend.ts):
Om de två filerna ovan importeras vid anrop av import(), och sedan utökas igen med extend(), kommer samlingen för böcker att ha både fälten title och price.
Denna metod är mycket användbar för att utöka samlings-strukturer som redan definierats av befintliga plugin.
Databasen utlöser följande händelser vid olika stadier i sin livscykel. Genom att prenumerera på dem med metoden on() kan ni utföra specifik bearbetning för att möta vissa affärsbehov.
'beforeSync' / 'afterSync'Utlöses före och efter att en ny samlings-strukturkonfiguration (fält, index, etc.) synkroniseras med databasen. Den utlöses vanligtvis när collection.sync() (internt anrop) körs och används generellt för att hantera logik för speciella fältutökningar.
Signatur
Typ
Exempel
'beforeValidate' / 'afterValidate'Innan data skapas eller uppdateras sker en valideringsprocess baserad på reglerna som definierats i samlingen. Motsvarande händelser utlöses före och efter valideringen. Detta utlöses när repository.create() eller repository.update() anropas.
Signatur
Typ
Exempel
'beforeCreate' / 'afterCreate'Motsvarande händelser utlöses före och efter att en post skapas. Detta utlöses när repository.create() anropas.
Signatur
Typ
Exempel
'beforeUpdate' / 'afterUpdate'Motsvarande händelser utlöses före och efter att en post uppdateras. Detta utlöses när repository.update() anropas.
Signatur
Typ
Exempel
'beforeSave' / 'afterSave'Motsvarande händelser utlöses före och efter att en post skapas eller uppdateras. Detta utlöses när repository.create() eller repository.update() anropas.
Signatur
Typ
Exempel
'beforeDestroy' / 'afterDestroy'Motsvarande händelser utlöses före och efter att en post tas bort. Detta utlöses när repository.destroy() anropas.
Signatur
Typ
Exempel
'afterCreateWithAssociations'Denna händelse utlöses efter att en post med hierarkisk associationsdata har skapats. Den utlöses när repository.create() anropas.
Signatur
Typ
Exempel
'afterUpdateWithAssociations'Denna händelse utlöses efter att en post med hierarkisk associationsdata har uppdaterats. Den utlöses när repository.update() anropas.
Signatur
Typ
Exempel
'afterSaveWithAssociations'Denna händelse utlöses efter att en post med hierarkisk associationsdata har skapats eller uppdaterats. Den utlöses när repository.create() eller repository.update() anropas.
Signatur
Typ
Exempel
'beforeDefineCollection'Utlöses innan en samling definieras, t.ex. när db.collection() anropas.
Obs: Detta är en synkron händelse.
Signatur
Typ
Exempel
'afterDefineCollection'Utlöses efter att en samling har definierats, t.ex. när db.collection() anropas.
Obs: Detta är en synkron händelse.
Signatur
Typ
Exempel
'beforeRemoveCollection' / 'afterRemoveCollection'Utlöses före och efter att en samling tas bort från minnet, t.ex. när db.removeCollection() anropas.
Obs: Detta är en synkron händelse.
Signatur
Typ
Exempel