logologo
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
เริ่มต้น
คู่มือ
การพัฒนา
ปลั๊กอิน
API
logologo

เริ่มต้นใช้งานฉบับย่อ

ภาพรวมการพัฒนาปลั๊กอิน
การเขียนปลั๊กอินแรกของคุณ
โครงสร้างไดเรกทอรีโปรเจกต์

การพัฒนาฝั่งเซิร์ฟเวอร์

ภาพรวม
ปลั๊กอิน
คอลเลกชัน
การดำเนินการฐานข้อมูล
การจัดการแหล่งข้อมูล
การจัดการทรัพยากร
การควบคุมการเข้าถึง (ACL)
มิดเดิลแวร์
แคช
เหตุการณ์
คอนเท็กซ์คำขอ
สคริปต์การย้ายข้อมูล
ล็อก
การทำให้เป็นสากล (I18n)
คำสั่ง
การจัดการงานที่กำหนดเวลา
การทดสอบ

การพัฒนาฝั่งไคลเอนต์

ภาพรวม
ปลั๊กอิน
คอนเท็กซ์
เราเตอร์
การควบคุมการเข้าถึง (ACL)
การจัดการแหล่งข้อมูล
ทรัพยากร
คำขอ
สไตล์และธีม
ล็อก
การทำให้เป็นสากล (I18n)
การทดสอบ

อื่นๆ

คู่มือการอัปเกรดปลั๊กอิน
รายการภาษา
การจัดการ Dependencies
การสร้าง
Previous Pageปลั๊กอิน
Next Pageการดำเนินการฐานข้อมูล
TIP

เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ

#คอลเลกชัน

ในการพัฒนาปลั๊กอิน NocoBase นั้น คอลเลกชัน (Collection) หรือตารางข้อมูล เป็นหนึ่งในแนวคิดหลักที่สำคัญที่สุดครับ/ค่ะ คุณสามารถเพิ่มหรือแก้ไขโครงสร้างตารางข้อมูลในปลั๊กอินได้ โดยการกำหนด (define) หรือขยาย (extend) คอลเลกชัน ซึ่งแตกต่างจากตารางข้อมูลที่สร้างผ่านหน้าจอการจัดการแหล่งข้อมูล คอลเลกชันที่ถูกกำหนดด้วยโค้ดมักจะเป็นตารางเมตาดาต้า (metadata) ระดับระบบ และจะไม่ปรากฏในรายการการจัดการแหล่งข้อมูลครับ/ค่ะ

#การกำหนดคอลเลกชัน (Defining Collections)

ตามโครงสร้างไดเรกทอรีแบบ Convention ไฟล์คอลเลกชันควรอยู่ในไดเรกทอรี ./src/server/collections ครับ/ค่ะ หากต้องการสร้างตารางใหม่ ให้ใช้ defineCollection() และหากต้องการขยายตารางที่มีอยู่แล้ว ให้ใช้ extendCollection()

import { defineCollection } from '@nocobase/database';

export default defineCollection({
  name: 'articles',
  title: '示例文章',
  fields: [
    { type: 'string', name: 'title', interface: 'input', uiSchema: { title: '标题', required: true } },
    { type: 'text', name: 'content', interface: 'textarea', uiSchema: { title: '正文' } },
    {
      type: 'belongsTo',
      name: 'author',
      target: 'users',
      foreignKey: 'authorId',
      interface: 'recordPicker',
      uiSchema: { title: '作者' },
    },
  ],
});

ในตัวอย่างด้านบนนี้:

  • name: ชื่อตาราง (ระบบจะสร้างตารางชื่อเดียวกันในฐานข้อมูลโดยอัตโนมัติครับ/ค่ะ)
  • title: ชื่อที่ใช้แสดงสำหรับตารางนี้ในหน้าจอ UI ครับ/ค่ะ
  • fields: ชุดของฟิลด์ข้อมูล โดยแต่ละฟิลด์จะประกอบด้วยคุณสมบัติ เช่น type, name เป็นต้นครับ/ค่ะ

เมื่อคุณต้องการเพิ่มฟิลด์หรือแก้ไขการตั้งค่าสำหรับคอลเลกชันของปลั๊กอินอื่น ๆ คุณสามารถใช้ extendCollection() ได้ครับ/ค่ะ

import { extendCollection } from '@nocobase/database';

export default extendCollection({
  name: 'articles',
  fields: [
    {
      type: 'boolean',
      name: 'isPublished',
      defaultValue: false,
    },
  ],
});

หลังจากเปิดใช้งานปลั๊กอินแล้ว ระบบจะเพิ่มฟิลด์ isPublished ไปยังตาราง articles ที่มีอยู่โดยอัตโนมัติครับ/ค่ะ

TIP

ไดเรกทอรีแบบ Convention จะโหลดเสร็จสมบูรณ์ก่อนที่เมธอด load() ของปลั๊กอินทั้งหมดจะทำงาน ซึ่งช่วยหลีกเลี่ยงปัญหาการพึ่งพา (dependency issues) ที่เกิดจากการที่ตารางข้อมูลบางส่วนยังไม่ได้ถูกโหลดครับ/ค่ะ

#การซิงโครไนซ์โครงสร้างฐานข้อมูล

เมื่อปลั๊กอินถูกเปิดใช้งานครั้งแรก ระบบจะซิงโครไนซ์การตั้งค่าคอลเลกชันกับโครงสร้างฐานข้อมูลโดยอัตโนมัติครับ/ค่ะ หากปลั๊กอินถูกติดตั้งและกำลังทำงานอยู่แล้ว หลังจากเพิ่มหรือแก้ไขคอลเลกชัน คุณจะต้องรันคำสั่งอัปเกรดด้วยตนเองดังนี้ครับ/ค่ะ

yarn nocobase upgrade

หากเกิดข้อผิดพลาด (exception) หรือข้อมูลที่ไม่ถูกต้อง (dirty data) ระหว่างการซิงโครไนซ์ คุณสามารถสร้างโครงสร้างตารางใหม่ได้โดยการติดตั้งแอปพลิเคชันอีกครั้งครับ/ค่ะ

yarn nocobase install -f

#การสร้าง Resource โดยอัตโนมัติ

หลังจากที่คุณกำหนดคอลเลกชันแล้ว ระบบจะสร้าง Resource ที่เกี่ยวข้องให้โดยอัตโนมัติ ซึ่งคุณสามารถดำเนินการเพิ่ม ลบ แก้ไข และค้นหา (CRUD) กับ Resource นั้นได้โดยตรงผ่าน API ครับ/ค่ะ ดูรายละเอียดเพิ่มเติมได้ที่ การจัดการ Resource ครับ/ค่ะ