ปิดท้ายด้วย Trigger
เพิ่ม Trigger function
Document ต้นฉบับ: https://firebase.google.com/docs/functions/firestore-events?gen=2nd
ใน service แต่ละตัวนั้น ได้ทำการเพิ่ม Trigger function ของตัวเองเอาไว้ผ่าน Firebase admin
Trigger function นั้นสามาร ถดึงข้อมูลได้ผ่าน Cloud function (ใน Firebase admin) ซึ่งใน Firestore นั้นจะมี event ดังนี้
onDocumentCreated
= มี document ถูกสร้างonDocumentUpdated
= มี document แก้ไขonDocumentDeleted
= มี document โดนลบonDocumentWritten
= มี document โดน สร้าง / แก้ไข หรือโดนลบ (จะมาลงทั้งหมด)
ซึ่งในตัวอย่างนี้ เราจะขอเพิ่มเพียงแค่ order เอาไว้ใน stat ของ Dashboard (idea อื่นๆสามารถใช้ trigger function ช่วยได้เช่นกัน) โดย
- เมื่อ order ถูก update เป็น status 'successful' = update ข้อมูลใน stat ของ realtime database
- โดยสิ่งที่เราจะใช้คือ
onDocumentWritten
เพื่อดักจับกับทุกเคสไว้ (จริงๆใช้เพียงonDocumentUpdated
ได้เช่นกัน)
ทำการเพิ่ม code ใน functions/index.js
// เมื่อ order ถูกสร้าง = update ข้อมูลใน collection stat ของ realtime DB
exports.orderCreated = onDocumentWritten('orders/{docId}', async (event) => {
try {
const oldData = event.data.before.data()
const newData = event.data.after.data()
const orderStateRef = realtimeDB.ref('stats/order')
// Delete order case and success case
if (newData && newData.status === 'successful' && (newData.status !== oldData.status)){
await orderStateRef.transaction((currentValue) => {
return currentValue + newData.totalPrice
})
}
} catch (error) {
console.log('error', error)
}
})
** ทุกคนสามารถประยุกต์ได้กับ user, product ได้เช่นเดียวกัน
Service อื่นๆที่เกี่ยวข้องกับ Cloud function
-
Cloud Scheduler สำหรับการ run service ทุกๆช่วงเวลาที่กำหนด https://firebase.google.com/docs/functions/schedule-functions?gen=2nd
-
Cloud Pub/Sub Triggers สำหรับการกระจาย message https://firebase.google.com/docs/functions/pubsub-events?gen=2nd
-
Firebase Cloud Messaging สำหรับการทำ notification https://firebase.google.com/docs/functions/use-cases
-
Firebase extensions ส่วนเสริมของ Firebase https://firebase.google.com/products/extensions
และนี่คืองาน Development ทั้งหมดของ Vue Firebase 101
- แน่นอน หลายจุด เราไม่ได้ทำการ implement ไว้เนื่องจากไอเดียหลายๆจุดเริ่มคล้ายๆกับจุดเดิมๆที่เราเคยทำ
- ดังนั้นทุกคนสามารถไปประยุกต์ต่อจนเสร็จได้