logologo
Start
Manual
Utveckling
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
Manual
Utveckling
Plugins
API
logologo

Snabbstart

Översikt: Plugin-utveckling
Skriv ditt första plugin
Projektets katalogstruktur

Server-side-utveckling

Översikt
Plugin
Collections (datatabeller)
Database (databasåtgärder)
DataSourceManager (datakällshantering)
ResourceManager (resurshantering)
ACL (behörighetskontroll)
Middleware
Cache
Event (händelser)
Context (request-kontext)
Migration (uppgraderingsskript)
Logger (loggar)
I18n (internationalisering)
Command (kommandorad)
CronJobManager (schemalagda jobb)
Test (tester)

Klient-side-utveckling

Översikt
Plugin
Context (kontext)
Router (routing)
ACL (behörighetskontroll)
DataSourceManager (datakällshantering)
Resource (resurser)
Request (förfrågningar)
Stilar & teman
Logger (loggar)
I18n (internationalisering)
Test (tester)

Övrigt

Plugin-uppgraderingsguide
Språklista
Beroendehantering
Bygga
Previous PageCollections (datatabeller)
Next PageDataSourceManager (datakällshantering)
TIP

Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen

#Databas

Database är en viktig komponent i datakällor av databastyp (DataSource). Varje datakälla av databastyp har en motsvarande Database-instans, som ni kan komma åt via dataSource.db. Huvuddatakällans databasinstans erbjuder även det praktiska aliaset app.db. Att känna till db:s vanliga metoder är grundläggande för att skriva server-sidiga plugin.

#Databasens komponenter

En typisk Database består av följande delar:

  • Collection (samling): Definierar datatabellstrukturen.
  • Model: Motsvarar ORM-modeller (hanteras vanligtvis av Sequelize).
  • Repository: Ett lager som kapslar in logik för dataåtkomst och tillhandahåller mer avancerade operationsmetoder.
  • FieldType: Fälttyper.
  • FilterOperator: Operatorer som används för filtrering.
  • Event: Livscykelhändelser och databashändelser.

#Användningstidpunkter för plugin

#Vad som är lämpligt att göra i beforeLoad-fasen

I detta skede är databasoperationer inte tillåtna. Det är lämpligt för registrering av statiska klasser eller händelselyssning.

  • db.registerFieldTypes() — Anpassade fälttyper
  • db.registerModels() — Registrera anpassade modellklasser
  • db.registerRepositories() — Registrera anpassade repository-klasser
  • db.registerOperators() — Registrera anpassade filteroperatorer
  • db.on() — Lyssna på databasrelaterade händelser

#Vad som är lämpligt att göra i load-fasen

I detta skede har alla föregående klassdefinitioner och händelser laddats, så när ni laddar datatabeller kommer det inte att finnas några saknade eller utelämnade beroenden.

  • db.defineCollection() — Definiera nya datatabeller
  • db.extendCollection() — Utöka befintliga datatabellkonfigurationer

Om det gäller att definiera plugin:s inbyggda tabeller, rekommenderas det att placera dem i katalogen ./src/server/collections. Se Samlingar.

#Dataoperationer

Database erbjuder två huvudsakliga sätt att komma åt och hantera data:

#Operationer via Repository

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

Repository-lagret används vanligtvis för att kapsla in affärslogik, såsom paginering, filtrering, behörighetskontroller med mera.

#Operationer via Model

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

Model-lagret motsvarar direkt ORM-entiteter och är lämpligt för att utföra databasoperationer på en lägre nivå.

#Vilka faser tillåter databasoperationer?

#Plugin-livscykel

FasDatabasoperationer tillåtna
staticImportNej
afterAddNej
beforeLoadNej
loadNej
installJa
beforeEnableJa
afterEnableJa
beforeDisableJa
afterDisableJa
removeJa
handleSyncMessageJa

#App-händelser

FasDatabasoperationer tillåtna
beforeLoadNej
afterLoadNej
beforeStartJa
afterStartJa
beforeInstallNej
afterInstallJa
beforeStopJa
afterStopNej
beforeDestroyJa
afterDestroyNej
beforeLoadPluginNej
afterLoadPluginNej
beforeEnablePluginJa
afterEnablePluginJa
beforeDisablePluginJa
afterDisablePluginJa
afterUpgradeJa

#Databashändelser/Hooks

FasDatabasoperationer tillåtna
beforeSyncNej
afterSyncJa
beforeValidateJa
afterValidateJa
beforeCreateJa
afterCreateJa
beforeUpdateJa
afterUpdateJa
beforeSaveJa
afterSaveJa
beforeDestroyJa
afterDestroyJa
afterCreateWithAssociationsJa
afterUpdateWithAssociationsJa
afterSaveWithAssociationsJa
beforeDefineCollectionNej
afterDefineCollectionNej
beforeRemoveCollectionNej
afterRemoveCollectionNej