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

Mulai Cepat

Gambaran Umum Pengembangan Plugin
Menulis Plugin Pertama
Struktur Direktori Proyek

Pengembangan Sisi Server

Ikhtisar
Plugin
Collections
Operasi Database
Manajemen Sumber Data
Manajemen Sumber Daya
ACL
Middleware
Cache
Event
Konteks Permintaan
Skrip Migrasi
Logger
I18n
Command
Manajemen Tugas Terjadwal
Test

Pengembangan Sisi Klien

Ikhtisar
Plugin
Konteks
Router
ACL
Manajemen Sumber Data
Resource
Request
Gaya & Tema
Logger
I18n
Test

Lainnya

Panduan Peningkatan Plugin
Daftar Bahasa
Manajemen Dependensi
Build
Previous PageCollections
Next PageManajemen Sumber Data
TIP

Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris

#Database

Database adalah komponen penting dari sumber data bertipe database (DataSource). Setiap sumber data bertipe database memiliki instance Database yang sesuai, yang dapat diakses melalui dataSource.db. Instance database dari sumber data utama juga menyediakan alias app.db yang mudah digunakan. Memahami metode umum db adalah dasar untuk menulis plugin sisi server.

#Komponen Database

Database yang umum terdiri dari bagian-bagian berikut:

  • Collection: Mendefinisikan struktur tabel data.
  • Model: Sesuai dengan model ORM (umumnya dikelola oleh Sequelize).
  • Repository: Lapisan repositori yang merangkum logika akses data, menyediakan metode operasi tingkat lebih tinggi.
  • FieldType: Tipe field.
  • FilterOperator: Operator yang digunakan untuk pemfilteran.
  • Event: Event siklus hidup dan event database.

#Waktu Penggunaan dalam Plugin

#Hal-hal yang Cocok untuk Tahap beforeLoad

Pada tahap ini, operasi database tidak diizinkan. Cocok untuk pendaftaran kelas statis atau mendengarkan event.

  • db.registerFieldTypes() — Tipe field kustom
  • db.registerModels() — Mendaftarkan kelas model kustom
  • db.registerRepositories() — Mendaftarkan kelas repositori kustom
  • db.registerOperators() — Mendaftarkan operator filter kustom
  • db.on() — Mendengarkan event terkait database

#Hal-hal yang Cocok untuk Tahap load

Pada tahap ini, semua definisi kelas dan event sebelumnya telah dimuat, sehingga pemuatan tabel data tidak akan mengalami kekurangan atau kelalaian.

  • db.defineCollection() — Mendefinisikan tabel data baru
  • db.extendCollection() — Memperluas konfigurasi tabel data yang sudah ada

Untuk mendefinisikan tabel bawaan plugin, lebih disarankan untuk menempatkannya di direktori ./src/server/collections. Lihat koleksi.

#Operasi Data

Database menyediakan dua cara utama untuk mengakses dan mengoperasikan data:

#Operasi melalui Repository

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

Lapisan Repository umumnya digunakan untuk merangkum logika bisnis, seperti paginasi, pemfilteran, pemeriksaan izin, dll.

#Operasi melalui Model

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

Lapisan Model secara langsung sesuai dengan entitas ORM, cocok untuk menjalankan operasi database tingkat lebih rendah.

#Tahap Mana yang Mengizinkan Operasi Database?

#Siklus Hidup Plugin

TahapOperasi Database Diizinkan
staticImportTidak
afterAddTidak
beforeLoadTidak
loadTidak
installYa
beforeEnableYa
afterEnableYa
beforeDisableYa
afterDisableYa
removeYa
handleSyncMessageYa

#Event Aplikasi

TahapOperasi Database Diizinkan
beforeLoadTidak
afterLoadTidak
beforeStartYa
afterStartYa
beforeInstallTidak
afterInstallYa
beforeStopYa
afterStopTidak
beforeDestroyYa
afterDestroyTidak
beforeLoadPluginTidak
afterLoadPluginTidak
beforeEnablePluginYa
afterEnablePluginYa
beforeDisablePluginYa
afterDisablePluginYa
afterUpgradeYa

#Event/Hook Database

TahapOperasi Database Diizinkan
beforeSyncTidak
afterSyncYa
beforeValidateYa
afterValidateYa
beforeCreateYa
afterCreateYa
beforeUpdateYa
afterUpdateYa
beforeSaveYa
afterSaveYa
beforeDestroyYa
afterDestroyYa
afterCreateWithAssociationsYa
afterUpdateWithAssociationsYa
afterSaveWithAssociationsYa
beforeDefineCollectionTidak
afterDefineCollectionTidak
beforeRemoveCollectionTidak
afterRemoveCollectionTidak