logologo
Start
Handleiding
Ontwikkeling
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Start
Handleiding
Ontwikkeling
Plugins
API
logologo

Snelstart

Overzicht plug-inontwikkeling
Eerste plug-in schrijven
Projectstructuur

Server-side ontwikkeling

Overzicht
Plug-in
Collecties
Database
DataSourceManager
ResourceManager
ACL
Middleware
Cache
Events
Context
Migratie
Logger
I18n
Commando
CronJobManager
Test

Client-side ontwikkeling

Overzicht
Plug-in
Context
Router
ACL
DataSourceManager
Resource
Request
Stijlen & Thema's
Logger
I18n
Test

Overig

Upgrade-gids voor plug-ins
Talenlijst
Dependency-beheer
Build
Previous PageCollecties
Next PageDataSourceManager
TIP

Dit document is vertaald door AI. Voor onnauwkeurigheden, raadpleeg de Engelse versie

#Database

Database is een belangrijk onderdeel van gegevensbronnen (DataSource) van het type database. Elke gegevensbron van het type database heeft een corresponderende Database-instantie, die u kunt benaderen via dataSource.db. De database-instantie van de hoofdgegevensbron biedt ook het handige alias app.db. Het is essentieel om bekend te zijn met de veelgebruikte methoden van db voor het schrijven van server-side plugins.

#Database-onderdelen

Een typische Database bestaat uit de volgende onderdelen:

  • Collectie: Definieert de structuur van datatabellen.
  • Model: Komt overeen met ORM-modellen (meestal beheerd door Sequelize).
  • Repository: De repositorylaag die de logica voor gegevenstoegang inkapselt en methoden voor geavanceerdere bewerkingen biedt.
  • FieldType: Veldtypen.
  • FilterOperator: Operatoren die worden gebruikt voor filtering.
  • Event: Levenscyclusgebeurtenissen en databasegebeurtenissen.

#Wanneer te gebruiken in plugins

#Wat te doen in de beforeLoad-fase

In deze fase zijn databasebewerkingen niet toegestaan. Deze fase is geschikt voor het registreren van statische klassen of het luisteren naar gebeurtenissen.

  • db.registerFieldTypes() — Aangepaste veldtypen
  • db.registerModels() — Aangepaste modelklassen registreren
  • db.registerRepositories() — Aangepaste repositoryklassen registreren
  • db.registerOperators() — Aangepaste filteroperatoren registreren
  • db.on() — Luisteren naar databasegerelateerde gebeurtenissen

#Wat te doen in de load-fase

In deze fase zijn alle voorgaande klassedefinities en gebeurtenissen geladen, zodat het laden van datatabellen geen ontbrekende of overgeslagen afhankelijkheden zal hebben.

  • db.defineCollection() — Nieuwe datatabellen definiëren
  • db.extendCollection() — Bestaande datatabelconfiguraties uitbreiden

Als u ingebouwde tabellen voor een plugin definieert, is het aan te raden deze in de map ./src/server/collections te plaatsen. Zie Collecties.

#Gegevensbewerkingen

Database biedt twee belangrijke manieren om gegevens te benaderen en te bewerken:

#Bewerkingen via Repository

const repo = db.getRepository('users');
const user = await repo.findOne({ filter: { id: 1 } });

De Repository-laag wordt meestal gebruikt om bedrijfslogica te encapsuleren, zoals paginering, filtering, toegangscontroles, enz.

#Bewerkingen via Model

const UserModel = db.getModel('users');
const user = await UserModel.findByPk(1);

De Model-laag komt direct overeen met ORM-entiteiten en is geschikt voor het uitvoeren van databasebewerkingen op een lager niveau.

#In welke fasen zijn databasebewerkingen toegestaan?

#Plugin-levenscyclus

FaseDatabasebewerkingen toegestaan
staticImportNee
afterAddNee
beforeLoadNee
loadNee
installJa
beforeEnableJa
afterEnableJa
beforeDisableJa
afterDisableJa
removeJa
handleSyncMessageJa

#App-gebeurtenissen

FaseDatabasebewerkingen toegestaan
beforeLoadNee
afterLoadNee
beforeStartJa
afterStartJa
beforeInstallNee
afterInstallJa
beforeStopJa
afterStopNee
beforeDestroyJa
afterDestroyNee
beforeLoadPluginNee
afterLoadPluginNee
beforeEnablePluginJa
afterEnablePluginJa
beforeDisablePluginJa
afterDisablePluginJa
afterUpgradeJa

#Database-gebeurtenissen/hooks

FaseDatabasebewerkingen toegestaan
beforeSyncNee
afterSyncJa
beforeValidateJa
afterValidateJa
beforeCreateJa
afterCreateJa
beforeUpdateJa
afterUpdateJa
beforeSaveJa
afterSaveJa
beforeDestroyJa
afterDestroyJa
afterCreateWithAssociationsJa
afterUpdateWithAssociationsJa
afterSaveWithAssociationsJa
beforeDefineCollectionNee
afterDefineCollectionNee
beforeRemoveCollectionNee
afterRemoveCollectionNee