Skip to main content

ปิดท้ายด้วย 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

และนี่คืองาน Development ทั้งหมดของ Vue Firebase 101

  • แน่นอน หลายจุดเราไม่ได้ทำการ implement ไว้เนื่องจากไอเดียหลายๆจุดเริ่มคล้ายๆกับจุดเดิมๆที่เราเคยทำ
  • ดังนั้นทุกคนสามารถไปประยุกต์ต่อจนเสร็จได้