เอกสารนี้แปลโดย AI หากมีข้อมูลที่ไม่ถูกต้อง โปรดดูเวอร์ชันภาษาอังกฤษ
Database เป็นเครื่องมือสำหรับโต้ตอบกับฐานข้อมูลที่ NocoBase จัดหาให้ ซึ่งช่วยให้แอปพลิเคชันแบบ No-code และ Low-code สามารถโต้ตอบกับฐานข้อมูลได้อย่างสะดวกสบายครับ/ค่ะ ฐานข้อมูลที่รองรับในปัจจุบันได้แก่:
ใน Constructor ของ Database เราสามารถกำหนดค่าการเชื่อมต่อฐานข้อมูลได้โดยการส่งพารามิเตอร์ options เข้าไปครับ/ค่ะ
สำหรับพารามิเตอร์การกำหนดค่าโดยละเอียด โปรดดูที่ Constructor ครับ/ค่ะ
Database ใช้ คอลเลกชัน ในการกำหนดโครงสร้างฐานข้อมูล โดยที่ออบเจกต์ คอลเลกชัน หนึ่งตัวจะแทนตารางหนึ่งตารางในฐานข้อมูลครับ/ค่ะ
หลังจากกำหนดโครงสร้างฐานข้อมูลเสร็จแล้ว เราสามารถใช้เมธอด sync() เพื่อซิงโครไนซ์โครงสร้างฐานข้อมูลได้เลยครับ/ค่ะ
สำหรับวิธีการใช้งาน คอลเลกชัน โดยละเอียดเพิ่มเติม โปรดดูที่ คอลเลกชัน ครับ/ค่ะ
Database ดำเนินการกับข้อมูลผ่าน Repository ครับ/ค่ะ
สำหรับวิธีการใช้งาน CRUD ของข้อมูลโดยละเอียดเพิ่มเติม โปรดดูที่ Repository ครับ/ค่ะ
Signature
constructor(options: DatabaseOptions)สร้างอินสแตนซ์ของฐานข้อมูลครับ/ค่ะ
Parameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
options.host | string | 'localhost' | โฮสต์ของฐานข้อมูล |
options.port | number | - | พอร์ตบริการฐานข้อมูล ซึ่งมีพอร์ตเริ่มต้นที่สอดคล้องกับฐานข้อมูลที่ใช้งานครับ/ค่ะ |
options.username | string | - | ชื่อผู้ใช้ฐานข้อมูล |
options.password | string | - | รหัสผ่านฐานข้อมูล |
options.database | string | - | ชื่อฐานข้อมูล |
options.dialect | string | 'mysql' | ประเภทฐานข้อมูล |
options.storage? | string | ':memory:' | โหมดการจัดเก็บสำหรับ SQLite |
options.logging? | boolean | false | เปิดใช้งานการบันทึก (logging) หรือไม่ |
options.define? | Object | {} | พารามิเตอร์การกำหนดตารางเริ่มต้น |
options.tablePrefix? | string | '' | ส่วนขยายของ NocoBase, คำนำหน้าชื่อตาราง |
options.migrator? | UmzugOptions | {} | ส่วนขยายของ NocoBase, พารามิเตอร์ที่เกี่ยวข้องกับตัวจัดการการย้ายข้อมูล (migration manager) โปรดดูการใช้งาน Umzug ครับ/ค่ะ |
addMigration()เพิ่มไฟล์การย้ายข้อมูล (migration) เพียงไฟล์เดียว
Signature
addMigration(options: MigrationItem)Parameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
options.name | string | - | ชื่อไฟล์การย้ายข้อมูล |
options.context? | string | - | บริบทของไฟล์การย้ายข้อมูล |
options.migration? | typeof Migration | - | คลาสที่กำหนดเองสำหรับไฟล์การย้ายข้อมูล |
options.up | Function | - | เมธอด up ของไฟล์การย้ายข้อมูล |
options.down | Function | - | เมธอด down ของไฟล์การย้ายข้อมูล |
Example
addMigrations()เพิ่มไฟล์การย้ายข้อมูลจากไดเรกทอรีที่ระบุ
Signature
addMigrations(options: AddMigrationsOptions): voidParameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
options.directory | string | '' | ไดเรกทอรีที่เก็บไฟล์การย้ายข้อมูล |
options.extensions | string[] | ['js', 'ts'] | นามสกุลไฟล์ |
options.namespace? | string | '' | เนมสเปซ |
options.context? | Object | { db } | บริบทของไฟล์การย้ายข้อมูล |
Example
inDialect()ตรวจสอบว่าประเภทฐานข้อมูลปัจจุบันเป็นประเภทที่ระบุหรือไม่
Signature
inDialect(dialect: string[]): booleanParameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
dialect | string[] | - | ประเภทฐานข้อมูล ค่าที่เลือกได้คือ mysql/postgres/mariadb |
getTablePrefix()รับคำนำหน้าชื่อตารางจากการกำหนดค่า
Signature
getTablePrefix(): stringcollection()กำหนด คอลเลกชัน ครับ/ค่ะ การเรียกใช้เมธอดนี้คล้ายกับเมธอด define ของ Sequelize ซึ่งจะสร้างโครงสร้างตารางในหน่วยความจำเท่านั้น หากต้องการบันทึกลงในฐานข้อมูลอย่างถาวร คุณจะต้องเรียกใช้เมธอด sync() ครับ/ค่ะ
Signature
collection(options: CollectionOptions): CollectionParameters
พารามิเตอร์การกำหนดค่า options ทั้งหมดจะเหมือนกับ Constructor ของคลาส คอลเลกชัน โปรดดูที่ คอลเลกชัน ครับ/ค่ะ
Events
'beforeDefineCollection': ทริกเกอร์ก่อนที่จะกำหนด คอลเลกชัน'afterDefineCollection': ทริกเกอร์หลังจากที่กำหนด คอลเลกชัน แล้วExample
getCollection()รับ คอลเลกชัน ที่กำหนดไว้แล้ว
Signature
getCollection(name: string): CollectionParameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
name | string | - | ชื่อ คอลเลกชัน |
Example
hasCollection()ตรวจสอบว่าได้กำหนด คอลเลกชัน ที่ระบุไว้แล้วหรือไม่
Signature
hasCollection(name: string): booleanParameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
name | string | - | ชื่อ คอลเลกชัน |
Example
removeCollection()ลบ คอลเลกชัน ที่กำหนดไว้แล้วครับ/ค่ะ การลบนี้จะเกิดขึ้นในหน่วยความจำเท่านั้น หากต้องการบันทึกการเปลี่ยนแปลงอย่างถาวร คุณจะต้องเรียกใช้เมธอด sync() ครับ/ค่ะ
Signature
removeCollection(name: string): voidParameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
name | string | - | ชื่อ คอลเลกชัน |
Events
'beforeRemoveCollection': ทริกเกอร์ก่อนที่จะลบ คอลเลกชัน'afterRemoveCollection': ทริกเกอร์หลังจากที่ลบ คอลเลกชัน แล้วExample
import()นำเข้าไฟล์ทั้งหมดในไดเรกทอรีเป็นไฟล์กำหนดค่า คอลเลกชัน เข้าสู่หน่วยความจำครับ/ค่ะ
Signature
async import(options: { directory: string; extensions?: ImportFileExtension[] }): Promise<Map<string, Collection>>Parameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
options.directory | string | - | พาธของไดเรกทอรีที่ต้องการนำเข้า |
options.extensions | string[] | ['ts', 'js'] | สแกนนามสกุลไฟล์ที่ระบุ |
Example
ไฟล์ ./collections/books.ts กำหนด คอลเลกชัน ไว้ดังนี้ครับ/ค่ะ
นำเข้าการกำหนดค่าที่เกี่ยวข้องเมื่อปลั๊กอินโหลดครับ/ค่ะ
registerFieldTypes()ลงทะเบียนประเภทฟิลด์ที่กำหนดเอง
Signature
registerFieldTypes(fieldTypes: MapOf<typeof Field>): voidParameters
fieldTypes คือคู่คีย์-ค่า โดยคีย์คือชื่อประเภทฟิลด์ และค่าคือคลาสประเภทฟิลด์ครับ/ค่ะ
Example
registerModels()ลงทะเบียนคลาสโมเดลข้อมูลที่กำหนดเอง
Signature
registerModels(models: MapOf<ModelStatic<any>>): voidParameters
models คือคู่คีย์-ค่า โดยคีย์คือชื่อโมเดลข้อมูล และค่าคือคลาสโมเดลข้อมูลครับ/ค่ะ
Example
registerRepositories()ลงทะเบียนคลาส Repository ที่กำหนดเอง
Signature
registerRepositories(repositories: MapOf<RepositoryType>): voidParameters
repositories คือคู่คีย์-ค่า โดยคีย์คือชื่อ Repository และค่าคือคลาส Repository ครับ/ค่ะ
Example
registerOperators()ลงทะเบียนตัวดำเนินการ (operator) การสืบค้นข้อมูลที่กำหนดเอง
Signature
registerOperators(operators: MapOf<OperatorFunc>)Parameters
operators คือคู่คีย์-ค่า โดยคีย์คือชื่อตัวดำเนินการ และค่าคือฟังก์ชันที่สร้างคำสั่งเปรียบเทียบของตัวดำเนินการครับ/ค่ะ
Example
getModel()รับคลาสโมเดลข้อมูลที่กำหนดไว้แล้วครับ/ค่ะ หากไม่มีการลงทะเบียนคลาสโมเดลที่กำหนดเองไว้ก่อนหน้านี้ ระบบจะส่งคืนคลาสโมเดลเริ่มต้นของ Sequelize โดยชื่อเริ่มต้นจะเหมือนกับชื่อที่กำหนดใน คอลเลกชัน ครับ/ค่ะ
Signature
getModel(name: string): ModelParameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
name | string | - | ชื่อโมเดลที่ลงทะเบียนไว้ |
Example
หมายเหตุ: คลาสโมเดลที่ได้จาก คอลเลกชัน จะไม่เท่ากับคลาสโมเดลที่ลงทะเบียนไว้โดยตรง แต่จะสืบทอดมาจากคลาสโมเดลที่ลงทะเบียนไว้ครับ/ค่ะ เนื่องจากคุณสมบัติของคลาสโมเดลใน Sequelize จะถูกแก้ไขในระหว่างกระบวนการเริ่มต้น NocoBase จึงจัดการความสัมพันธ์การสืบทอดนี้โดยอัตโนมัติครับ/ค่ะ นอกเหนือจากความไม่เท่ากันของคลาสแล้ว การกำหนดค่าอื่นๆ ทั้งหมดสามารถใช้งานได้ตามปกติครับ/ค่ะ
getRepository()รับคลาส Repository ที่กำหนดเองครับ/ค่ะ หากไม่มีการลงทะเบียนคลาส Repository ที่กำหนดเองไว้ก่อนหน้านี้ ระบบจะส่งคืนคลาส Repository เริ่มต้นของ NocoBase โดยชื่อเริ่มต้นจะเหมือนกับชื่อที่กำหนดใน คอลเลกชัน ครับ/ค่ะ
คลาส Repository ส่วนใหญ่จะใช้สำหรับการดำเนินการ CRUD (สร้าง, อ่าน, อัปเดต, ลบ) โดยอิงตามโมเดลข้อมูล โปรดดูที่ Repository ครับ/ค่ะ
Signature
getRepository(name: string): RepositorygetRepository(name: string, relationId?: string | number): RepositoryParameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
name | string | - | ชื่อ Repository ที่ลงทะเบียนไว้ |
relationId | string | number | - | ค่า Foreign Key สำหรับข้อมูลความสัมพันธ์ |
เมื่อชื่อเป็นชื่อที่เกี่ยวข้อง เช่น 'tables.relations' ระบบจะส่งคืนคลาส Repository ที่เกี่ยวข้องครับ/ค่ะ หากมีการระบุพารามิเตอร์ที่สอง Repository จะอิงตามค่า Foreign Key ของข้อมูลความสัมพันธ์เมื่อใช้งาน (เช่น การสืบค้น, การแก้ไข) ครับ/ค่ะ
Example
สมมติว่ามี คอลเลกชัน สองตารางคือ บทความ และ ผู้เขียน และ คอลเลกชัน บทความมี Foreign Key ที่ชี้ไปยัง คอลเลกชัน ผู้เขียนครับ/ค่ะ
on()รับฟังเหตุการณ์ของฐานข้อมูล
Signature
on(event: string, listener: (...args: any[]) => void | Promise<void>): voidParameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| event | string | - | ชื่อเหตุการณ์ |
| listener | Function | - | ตัวรับฟังเหตุการณ์ |
ชื่อเหตุการณ์รองรับเหตุการณ์ Model ของ Sequelize โดยค่าเริ่มต้นครับ/ค่ะ สำหรับเหตุการณ์แบบ Global ให้รับฟังโดยใช้รูปแบบชื่อ <sequelize_model_global_event> และสำหรับเหตุการณ์ Model เดี่ยว ให้รับฟังโดยใช้รูปแบบชื่อ <model_name>.<sequelize_model_event> ครับ/ค่ะ
สำหรับคำอธิบายพารามิเตอร์และตัวอย่างโดยละเอียดของประเภทเหตุการณ์ในตัวทั้งหมด โปรดดูเนื้อหาในส่วน เหตุการณ์ในตัว ครับ/ค่ะ
off()ลบฟังก์ชันตัวรับฟังเหตุการณ์
Signature
off(name: string, listener: Function)Parameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| name | string | - | ชื่อเหตุการณ์ |
| listener | Function | - | ตัวรับฟังเหตุการณ์ |
Example
auth()การยืนยันการเชื่อมต่อฐานข้อมูลครับ/ค่ะ สามารถใช้เพื่อยืนยันว่าแอปพลิเคชันได้สร้างการเชื่อมต่อกับข้อมูลแล้ว
Signature
auth(options: QueryOptions & { retry?: number } = {}): Promise<boolean>Parameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
options? | Object | - | ตัวเลือกการยืนยัน |
options.retry? | number | 10 | จำนวนครั้งที่ลองใหม่เมื่อการยืนยันล้มเหลว |
options.transaction? | Transaction | - | ออบเจกต์ Transaction |
options.logging? | boolean | Function | false | พิมพ์ล็อกหรือไม่ |
Example
reconnect()เชื่อมต่อฐานข้อมูลใหม่
Example
closed()ตรวจสอบว่าการเชื่อมต่อฐานข้อมูลถูกปิดแล้วหรือไม่
Signature
closed(): booleanclose()ปิดการเชื่อมต่อฐานข้อมูล เทียบเท่ากับ sequelize.close() ครับ/ค่ะ
sync()ซิงโครไนซ์โครงสร้าง คอลเลกชัน ของฐานข้อมูลครับ/ค่ะ เทียบเท่ากับ sequelize.sync() สำหรับพารามิเตอร์ โปรดดู เอกสารของ Sequelize ครับ/ค่ะ
clean()ล้างฐานข้อมูล ซึ่งจะลบ คอลเลกชัน ทั้งหมด
Signature
clean(options: CleanOptions): Promise<void>Parameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
options.drop | boolean | false | ลบ คอลเลกชัน ทั้งหมดหรือไม่ |
options.skip | string[] | - | การกำหนดค่าชื่อ คอลเลกชัน ที่จะข้าม |
options.transaction | Transaction | - | ออบเจกต์ Transaction |
Example
ลบ คอลเลกชัน ทั้งหมด ยกเว้น คอลเลกชัน users ครับ/ค่ะ
defineCollection()สร้างเนื้อหาการกำหนดค่าสำหรับ คอลเลกชัน
Signature
defineCollection(name: string, config: CollectionOptions): CollectionOptionsParameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
collectionOptions | CollectionOptions | - | เหมือนกับพารามิเตอร์ทั้งหมดของ db.collection() ครับ/ค่ะ |
Example
สำหรับไฟล์กำหนดค่า คอลเลกชัน ที่จะถูกนำเข้าโดย db.import() ครับ/ค่ะ
extendCollection()ขยายเนื้อหาการกำหนดค่าโครงสร้าง คอลเลกชัน ที่อยู่ในหน่วยความจำ ซึ่งส่วนใหญ่ใช้สำหรับเนื้อหาไฟล์ที่นำเข้าโดยเมธอด import() ครับ/ค่ะ เมธอดนี้เป็นเมธอดระดับบนสุดที่ส่งออกโดยแพ็กเกจ @nocobase/database และไม่ได้ถูกเรียกผ่านอินสแตนซ์ของ db นอกจากนี้ยังสามารถใช้ชื่อเรียกแทน extend ได้ด้วยครับ/ค่ะ
Signature
extendCollection(collectionOptions: CollectionOptions, mergeOptions?: MergeOptions): ExtendedCollectionOptionsParameters
| ชื่อพารามิเตอร์ | ประเภท | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
collectionOptions | CollectionOptions | - | เหมือนกับพารามิเตอร์ทั้งหมดของ db.collection() ครับ/ค่ะ |
mergeOptions? | MergeOptions | - | พารามิเตอร์สำหรับแพ็กเกจ npm deepmerge ครับ/ค่ะ |
Example
การกำหนด คอลเลกชัน books ดั้งเดิม (books.ts):
การขยายการกำหนด คอลเลกชัน books (books.extend.ts):
หากไฟล์ทั้งสองข้างต้นถูกนำเข้าเมื่อเรียกใช้ import() หลังจากถูกขยายอีกครั้งด้วย extend() คอลเลกชัน books จะมีฟิลด์ title และ price ครับ/ค่ะ
เมธอดนี้มีประโยชน์อย่างมากในการขยายโครงสร้าง คอลเลกชัน ที่ถูกกำหนดไว้แล้วโดยปลั๊กอินที่มีอยู่ครับ/ค่ะ
ฐานข้อมูลจะทริกเกอร์เหตุการณ์ที่เกี่ยวข้องต่อไปนี้ในแต่ละช่วงของวงจรชีวิตครับ/ค่ะ การสมัครรับเหตุการณ์เหล่านี้ด้วยเมธอด on() จะช่วยให้สามารถจัดการเฉพาะเจาะจงเพื่อตอบสนองความต้องการทางธุรกิจบางอย่างได้ครับ/ค่ะ
'beforeSync' / 'afterSync'ทริกเกอร์ก่อนและหลังการซิงโครไนซ์การกำหนดค่าโครงสร้าง คอลเลกชัน ใหม่ (เช่น ฟิลด์, ดัชนี) ไปยังฐานข้อมูลครับ/ค่ะ โดยปกติจะทริกเกอร์เมื่อมีการเรียกใช้ collection.sync() (การเรียกภายใน) และมักใช้สำหรับการจัดการตรรกะสำหรับการขยายฟิลด์พิเศษบางอย่างครับ/ค่ะ
Signature
Type
Example
'beforeValidate' / 'afterValidate'ก่อนที่จะสร้างหรืออัปเดตข้อมูล จะมีกระบวนการตรวจสอบข้อมูลตามกฎที่กำหนดใน คอลเลกชัน ครับ/ค่ะ เหตุการณ์ที่เกี่ยวข้องจะถูกทริกเกอร์ก่อนและหลังการตรวจสอบ ซึ่งจะเกิดขึ้นเมื่อมีการเรียกใช้ repository.create() หรือ repository.update() ครับ/ค่ะ
Signature
Type
Example
'beforeCreate' / 'afterCreate'เหตุการณ์ที่เกี่ยวข้องจะถูกทริกเกอร์ก่อนและหลังการสร้างเรคคอร์ดข้อมูลครับ/ค่ะ ซึ่งจะเกิดขึ้นเมื่อมีการเรียกใช้ repository.create() ครับ/ค่ะ
Signature
Type
Example
'beforeUpdate' / 'afterUpdate'เหตุการณ์ที่เกี่ยวข้องจะถูกทริกเกอร์ก่อนและหลังการอัปเดตเรคคอร์ดข้อมูลครับ/ค่ะ ซึ่งจะเกิดขึ้นเมื่อมีการเรียกใช้ repository.update() ครับ/ค่ะ
Signature
Type
Example
'beforeSave' / 'afterSave'เหตุการณ์ที่เกี่ยวข้องจะถูกทริกเกอร์ก่อนและหลังการสร้างหรืออัปเดตเรคคอร์ดข้อมูลครับ/ค่ะ ซึ่งจะเกิดขึ้นเมื่อมีการเรียกใช้ repository.create() หรือ repository.update() ครับ/ค่ะ
Signature
Type
Example
'beforeDestroy' / 'afterDestroy'เหตุการณ์ที่เกี่ยวข้องจะถูกทริกเกอร์ก่อนและหลังการลบเรคคอร์ดข้อมูลครับ/ค่ะ ซึ่งจะเกิดขึ้นเมื่อมีการเรียกใช้ repository.destroy() ครับ/ค่ะ
Signature
Type
Example
'afterCreateWithAssociations'เหตุการณ์นี้จะถูกทริกเกอร์หลังจากสร้างเรคคอร์ดข้อมูลที่มีความสัมพันธ์แบบลำดับชั้นครับ/ค่ะ ซึ่งจะเกิดขึ้นเมื่อมีการเรียกใช้ repository.create() ครับ/ค่ะ
Signature
Type
Example
'afterUpdateWithAssociations'เหตุการณ์นี้จะถูกทริกเกอร์หลังจากอัปเดตเรคคอร์ดข้อมูลที่มีความสัมพันธ์แบบลำดับชั้นครับ/ค่ะ ซึ่งจะเกิดขึ้นเมื่อมีการเรียกใช้ repository.update() ครับ/ค่ะ
Signature
Type
Example
'afterSaveWithAssociations'เหตุการณ์นี้จะถูกทริกเกอร์หลังจากสร้างหรืออัปเดตเรคคอร์ดข้อมูลที่มีความสัมพันธ์แบบลำดับชั้นครับ/ค่ะ ซึ่งจะเกิดขึ้นเมื่อมีการเรียกใช้ repository.create() หรือ repository.update() ครับ/ค่ะ
Signature
Type
Example
'beforeDefineCollection'ทริกเกอร์ก่อนที่จะกำหนด คอลเลกชัน เช่น เมื่อมีการเรียกใช้ db.collection() ครับ/ค่ะ
หมายเหตุ: เหตุการณ์นี้เป็นเหตุการณ์แบบ Synchronous ครับ/ค่ะ
Signature
Type
Example
'afterDefineCollection'ทริกเกอร์หลังจากที่กำหนด คอลเลกชัน แล้ว เช่น เมื่อมีการเรียกใช้ db.collection() ครับ/ค่ะ
หมายเหตุ: เหตุการณ์นี้เป็นเหตุการณ์แบบ Synchronous ครับ/ค่ะ
Signature
Type
Example
'beforeRemoveCollection' / 'afterRemoveCollection'ทริกเกอร์ก่อนและหลังการลบ คอลเลกชัน ออกจากหน่วยความจำ เช่น เมื่อมีการเรียกใช้ db.removeCollection() ครับ/ค่ะ
หมายเหตุ: เหตุการณ์นี้เป็นเหตุการณ์แบบ Synchronous ครับ/ค่ะ
Signature
Type
Example