Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie
Database is de database-interactietool van NocoBase, die zeer handige database-interactiemogelijkheden biedt voor no-code en low-code applicaties. Momenteel worden de volgende databases ondersteund:
In de Database constructor configureert u de databaseverbinding door de options parameter mee te geven.
Voor gedetailleerde configuratieparameters verwijzen we u naar Constructor.
Database definieert de databasestructuur via collectie. Een collectie-object vertegenwoordigt een tabel in de database.
Nadat de databasestructuur is gedefinieerd, kunt u de sync() methode gebruiken om de databasestructuur te synchroniseren.
Voor een gedetailleerder gebruik van collectie verwijzen we u naar Collectie.
Database werkt met gegevens via Repository.
Voor een gedetailleerder gebruik van CRUD-bewerkingen op gegevens verwijzen we u naar Repository.
Signatuur
constructor(options: DatabaseOptions)Creëert een database-instantie.
Parameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
options.host | string | 'localhost' | Host van de database |
options.port | number | - | Poort van de databaseservice, met een standaardpoort die overeenkomt met de gebruikte database |
options.username | string | - | Gebruikersnaam van de database |
options.password | string | - | Wachtwoord van de database |
options.database | string | - | Naam van de database |
options.dialect | string | 'mysql' | Type database |
options.storage? | string | ':memory:' | Opslagmodus voor SQLite |
options.logging? | boolean | false | Of logging ingeschakeld moet worden |
options.define? | Object | {} | Standaardparameters voor tabeldefinitie |
options.tablePrefix? | string | '' | NocoBase-extensie, tabelnaamvoorvoegsel |
options.migrator? | UmzugOptions | {} | NocoBase-extensie, parameters met betrekking tot de migratiemanager, zie de Umzug implementatie |
addMigration()Voegt één migratiebestand toe.
Signatuur
addMigration(options: MigrationItem)Parameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
options.name | string | - | Naam van het migratiebestand |
options.context? | string | - | Context van het migratiebestand |
options.migration? | typeof Migration | - | Aangepaste klasse voor het migratiebestand |
options.up | Function | - | up-methode van het migratiebestand |
options.down | Function | - | down-methode van het migratiebestand |
Voorbeeld
addMigrations()Voegt migratiebestanden toe vanuit een opgegeven map.
Signatuur
addMigrations(options: AddMigrationsOptions): voidParameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
options.directory | string | '' | Map waar migratiebestanden zich bevinden |
options.extensions | string[] | ['js', 'ts'] | Bestandsextensies |
options.namespace? | string | '' | Naamruimte |
options.context? | Object | { db } | Context van het migratiebestand |
Voorbeeld
inDialect()Controleert of het huidige databasetype één van de opgegeven types is.
Signatuur
inDialect(dialect: string[]): booleanParameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
dialect | string[] | - | Type database, mogelijke waarden zijn mysql/postgres/mariadb |
getTablePrefix()Haalt het tabelnaamvoorvoegsel op uit de configuratie.
Signatuur
getTablePrefix(): stringcollection()Definieert een collectie. Deze aanroep is vergelijkbaar met de define-methode van Sequelize en creëert de tabelstructuur alleen in het geheugen. Om deze persistent te maken in de database, moet u de sync-methode aanroepen.
Signatuur
collection(options: CollectionOptions): CollectionParameters
Alle options-configuratieparameters komen overeen met de constructor van de collectie-klasse; zie Collectie.
Gebeurtenissen
'beforeDefineCollection': Wordt geactiveerd voordat een collectie wordt gedefinieerd.'afterDefineCollection': Wordt geactiveerd nadat een collectie is gedefinieerd.Voorbeeld
getCollection()Haalt een gedefinieerde collectie op.
Signatuur
getCollection(name: string): CollectionParameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
name | string | - | Naam van de collectie |
Voorbeeld
hasCollection()Controleert of een opgegeven collectie is gedefinieerd.
Signatuur
hasCollection(name: string): booleanParameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
name | string | - | Naam van de collectie |
Voorbeeld
removeCollection()Verwijdert een gedefinieerde collectie. Deze wordt alleen uit het geheugen verwijderd; om de wijziging persistent te maken, moet u de sync-methode aanroepen.
Signatuur
removeCollection(name: string): voidParameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
name | string | - | Naam van de collectie |
Gebeurtenissen
'beforeRemoveCollection': Wordt geactiveerd voordat een collectie wordt verwijderd.'afterRemoveCollection': Wordt geactiveerd nadat een collectie is verwijderd.Voorbeeld
import()Importeert alle bestanden in een map als collectieconfiguraties in het geheugen.
Signatuur
async import(options: { directory: string; extensions?: ImportFileExtension[] }): Promise<Map<string, Collection>>Parameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
options.directory | string | - | Pad van de te importeren map |
options.extensions | string[] | ['ts', 'js'] | Scannen op specifieke achtervoegsels |
Voorbeeld
De collectie gedefinieerd in het bestand ./collections/books.ts is als volgt:
Importeer de relevante configuratie wanneer de plugin laadt:
registerFieldTypes()Registreert aangepaste veldtypen.
Signatuur
registerFieldTypes(fieldTypes: MapOf<typeof Field>): voidParameters
fieldTypes is een sleutel-waardepaar waarbij de sleutel de naam van het veldtype is en de waarde de klasse van het veldtype.
Voorbeeld
registerModels()Registreert aangepaste datamodelklassen.
Signatuur
registerModels(models: MapOf<ModelStatic<any>>): voidParameters
models is een sleutel-waardepaar waarbij de sleutel de modelnaam is en de waarde de modelklasse.
Voorbeeld
registerRepositories()Registreert aangepaste repository-klassen.
Signatuur
registerRepositories(repositories: MapOf<RepositoryType>): voidParameters
repositories is een sleutel-waardepaar waarbij de sleutel de repository-naam is en de waarde de repository-klasse.
Voorbeeld
registerOperators()Registreert aangepaste dataquery-operatoren.
Signatuur
registerOperators(operators: MapOf<OperatorFunc>)Parameters
operators is een sleutel-waardepaar waarbij de sleutel de operatornaam is en de waarde de functie die de vergelijkingsinstructie genereert.
Voorbeeld
getModel()Haalt een gedefinieerde datamodelklasse op. Als er eerder geen aangepaste modelklasse is geregistreerd, retourneert deze de standaard Sequelize-modelklasse. De standaardnaam is hetzelfde als de collectienaam.
Signatuur
getModel(name: string): ModelParameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
name | string | - | Geregistreerde modelnaam |
Voorbeeld
Opmerking: De modelklasse die uit een collectie wordt verkregen, is niet strikt gelijk aan de geregistreerde modelklasse, maar erft ervan. Aangezien de eigenschappen van de modelklasse van Sequelize tijdens de initialisatie worden gewijzigd, verwerkt NocoBase deze overervingsrelatie automatisch. Behalve de ongelijkheid van de klasse kunnen alle andere definities normaal worden gebruikt.
getRepository()Haalt een aangepaste repository-klasse op. Als er eerder geen aangepaste repository-klasse is geregistreerd, retourneert deze de standaard NocoBase repository-klasse. De standaardnaam is hetzelfde als de collectienaam.
Repository-klassen worden voornamelijk gebruikt voor CRUD-bewerkingen op basis van datamodellen; zie Repository.
Signatuur
getRepository(name: string): RepositorygetRepository(name: string, relationId?: string | number): RepositoryParameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
name | string | - | Geregistreerde repository-naam |
relationId | string | number | - | Waarde van de externe sleutel voor relationele gegevens |
Wanneer de naam een associatienaam is, zoals 'tables.relations', retourneert deze de bijbehorende repository-klasse. Als de tweede parameter wordt opgegeven, zal de repository bij gebruik (query's, updates, enz.) gebaseerd zijn op de waarde van de externe sleutel van de relationele gegevens.
Voorbeeld
Stel dat er twee collecties zijn, posts en authors, en de posts-collectie heeft een externe sleutel die verwijst naar de authors-collectie:
on()Luistert naar databasegebeurtenissen.
Signatuur
on(event: string, listener: (...args: any[]) => void | Promise<void>): voidParameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
| event | string | - | Naam van de gebeurtenis |
| listener | Function | - | Gebeurtenisluisteraar |
De gebeurtenisnamen ondersteunen standaard de Model-gebeurtenissen van Sequelize. Voor globale gebeurtenissen luistert u met het formaat <sequelize_model_global_event>, en voor enkele Model-gebeurtenissen gebruikt u het formaat <model_name>.<sequelize_model_event>.
Voor parameterbeschrijvingen en gedetailleerde voorbeelden van alle ingebouwde gebeurtenistypen verwijzen we u naar de sectie Ingebouwde gebeurtenissen.
off()Verwijdert een gebeurtenisluisterfunctie.
Signatuur
off(name: string, listener: Function)Parameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
| name | string | - | Naam van de gebeurtenis |
| listener | Function | - | Gebeurtenisluisteraar |
Voorbeeld
auth()Databaseverbindingsauthenticatie. Kan worden gebruikt om ervoor te zorgen dat de applicatie een verbinding met de gegevens heeft tot stand gebracht.
Signatuur
auth(options: QueryOptions & { retry?: number } = {}): Promise<boolean>Parameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
options? | Object | - | Authenticatie-opties |
options.retry? | number | 10 | Aantal herpogingen bij authenticatiefout |
options.transaction? | Transaction | - | Transactieobject |
options.logging? | boolean | Function | false | Of logs moeten worden afgedrukt |
Voorbeeld
reconnect()Maakt opnieuw verbinding met de database.
Voorbeeld
closed()Controleert of de databaseverbinding is gesloten.
Signatuur
closed(): booleanclose()Sluit de databaseverbinding. Gelijk aan sequelize.close().
sync()Synchroniseert de collectiestructuur van de database. Gelijk aan sequelize.sync(); voor parameters verwijzen we u naar de Sequelize-documentatie.
clean()Schoont de database op, waarbij alle collecties worden verwijderd.
Signatuur
clean(options: CleanOptions): Promise<void>Parameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
options.drop | boolean | false | Of alle collecties moeten worden verwijderd |
options.skip | string[] | - | Configuratie van over te slaan collectienamen |
options.transaction | Transaction | - | Transactieobject |
Voorbeeld
Verwijdert alle collecties behalve de users-collectie.
defineCollection()Creëert de configuratie-inhoud voor een collectie.
Signatuur
defineCollection(name: string, config: CollectionOptions): CollectionOptionsParameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
collectionOptions | CollectionOptions | - | Hetzelfde als alle parameters van db.collection() |
Voorbeeld
Voor een collectieconfiguratiebestand dat door db.import() moet worden geïmporteerd:
extendCollection()Breidt de configuratie-inhoud van een reeds in het geheugen aanwezige collectie uit, voornamelijk voor bestandsinhoud die is geïmporteerd met de import()-methode. Deze methode is een top-level methode die wordt geëxporteerd door het @nocobase/database pakket en wordt niet aangeroepen via een db-instantie. Het extend-alias kan ook worden gebruikt.
Signatuur
extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): ExtendedCollectionOptionsParameters
| Parameter | Type | Standaardwaarde | Beschrijving |
|---|---|---|---|
collectionOptions | CollectionOptions | - | Hetzelfde als alle parameters van db.collection() |
mergeOptions? | MergeOptions | - | Parameters voor het npm-pakket deepmerge |
Voorbeeld
Originele boeken collectiedefinitie (books.ts):
Uitgebreide boeken collectiedefinitie (books.extend.ts):
Als de twee bovenstaande bestanden worden geïmporteerd bij het aanroepen van import(), en vervolgens opnieuw worden uitgebreid met extend(), zal de boeken collectie zowel de velden title als price bevatten.
Deze methode is erg handig voor het uitbreiden van collectiestructuren die al zijn gedefinieerd door bestaande plugins.
De database activeert de volgende corresponderende gebeurtenissen in verschillende fasen van zijn levenscyclus. Door u hierop te abonneren met de on()-methode, kunt u specifieke verwerkingen uitvoeren om aan bepaalde bedrijfsbehoeften te voldoen.
'beforeSync' / 'afterSync'Wordt geactiveerd voor en na het synchroniseren van een nieuwe collectiestructuurconfiguratie (velden, indexen, enz.) met de database. Dit wordt meestal geactiveerd wanneer collectie.sync() (interne aanroep) wordt uitgevoerd en wordt over het algemeen gebruikt voor het afhandelen van logica voor speciale veldextensies.
Signatuur
Type
Voorbeeld
'beforeValidate' / 'afterValidate'Voordat gegevens worden aangemaakt of bijgewerkt, vindt er een validatieproces plaats op basis van de regels die in de collectie zijn gedefinieerd. Corresponderende gebeurtenissen worden geactiveerd voor en na de validatie. Dit wordt geactiveerd wanneer repository.create() of repository.update() wordt aangeroepen.
Signatuur
Type
Voorbeeld
'beforeCreate' / 'afterCreate'Corresponderende gebeurtenissen worden geactiveerd voor en na het aanmaken van een record. Dit wordt geactiveerd wanneer repository.create() wordt aangeroepen.
Signatuur
Type
Voorbeeld
'beforeUpdate' / 'afterUpdate'Corresponderende gebeurtenissen worden geactiveerd voor en na het bijwerken van een record. Dit wordt geactiveerd wanneer repository.update() wordt aangeroepen.
Signatuur
Type
Voorbeeld
'beforeSave' / 'afterSave'Corresponderende gebeurtenissen worden geactiveerd voor en na het aanmaken of bijwerken van een record. Dit wordt geactiveerd wanneer repository.create() of repository.update() wordt aangeroepen.
Signatuur
Type
Voorbeeld
'beforeDestroy' / 'afterDestroy'Corresponderende gebeurtenissen worden geactiveerd voor en na het verwijderen van een record. Dit wordt geactiveerd wanneer repository.destroy() wordt aangeroepen.
Signatuur
Type
Voorbeeld
'afterCreateWithAssociations'Deze gebeurtenis wordt geactiveerd na het aanmaken van een record met hiërarchische associatiegegevens. Dit wordt geactiveerd wanneer repository.create() wordt aangeroepen.
Signatuur
Type
Voorbeeld
'afterUpdateWithAssociations'Deze gebeurtenis wordt geactiveerd na het bijwerken van een record met hiërarchische associatiegegevens. Dit wordt geactiveerd wanneer repository.update() wordt aangeroepen.
Signatuur
Type
Voorbeeld
'afterSaveWithAssociations'Deze gebeurtenis wordt geactiveerd na het aanmaken of bijwerken van een record met hiërarchische associatiegegevens. Dit wordt geactiveerd wanneer repository.create() of repository.update() wordt aangeroepen.
Signatuur
Type
Voorbeeld
'beforeDefineCollection'Wordt geactiveerd voordat een collectie wordt gedefinieerd, bijvoorbeeld wanneer db.collection() wordt aangeroepen.
Opmerking: Dit is een synchrone gebeurtenis.
Signatuur
Type
Voorbeeld
'afterDefineCollection'Wordt geactiveerd nadat een collectie is gedefinieerd, bijvoorbeeld wanneer db.collection() wordt aangeroepen.
Opmerking: Dit is een synchrone gebeurtenis.
Signatuur
Type
Voorbeeld
'beforeRemoveCollection' / 'afterRemoveCollection'Wordt geactiveerd voor en nadat een collectie uit het geheugen is verwijderd, bijvoorbeeld wanneer db.removeCollection() wordt aangeroepen.
Opmerking: Dit is een synchrone gebeurtenis.
Signatuur
Type
Voorbeeld