รู้จักกับ Cloud function
สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video
Step ต่อไป
เราจะมาเริ่มทำ placeorder กันจริงๆด้วยการเพิ่ม Backend เข้าสู่ Easy commerce เข้าไป
Cloud function คืออะไร ?
doc ต้นฉบับ: https://firebase.google.com/docs/functions
Cloud functions for Firebase (จากนี้ขอเรียกสั้นๆว่า Cloud functions) คือ service serverless framework ที่ Firebase ได้เตรียมไว้ให้เราสามารถพัฒนาและมี Backend server เป็นของตัวเองได้โดยที่ไม่จำเป็นต้อง setup server ขึ้นมาเอง (ตาม concept ของ serverless)
- โดยจะ support ทั้งการทำ HTTPS requests (สามารถทำอย่าง Restful API ได้)
- Event Trigger ได้ (ตรวจจับการ change ของ service Firebase เช่น Firestore, Realtime database)
- support ทั้ง Typescript และ Javascript
- run อยู่บน Google Cloud infrastructure และสามารถจัดการ environment แยกกันได้ (เราจะพูดกันในหัวข้อของการขึ้นงานอีกที)
ข้อดีใหญ่ๆคือ
- Firebase SDK support เรื่องนี้รวมถึงมี emulator ที่สามารถ run cloud functions serverless ขึ้นมาได้ทันที
- Zero maintenance = ไม่ต้องกังวลเรื่องการ deploy version ใหม่, scale, credential, configuration (Firebase จัดการให้หมดทุกอย่างแล้ว)
- มันคือ Backend Service = ดังนั้นอะไรก็ตามที่ต้องการ run ด้านหลัง (ที่ไม่ได้เป็นการต่อ Service ตรงๆแล้วทำได้เหมือนกับหัวข้อก่อนหน้านี้) Cloud functions จะตอบโจทย์นี้
setup Cloud functions
Cloud functions นั้นเราได้ทำการลงไว้ตั้งแต่ตอนลง firebase init
เป็นที่เรียบร้อย เราจะเจอว่ามี folder functions อยู่อันหนึ่ง
- ดังนั้นไม่ต้อง setup อะไรเพิ่มเติมแล้ว (ใครที่ยังไม่เจอ ให้ย้อนกลับไปดูตอน setup project เราจะมีการเลือก function เอาไว้)
เราจะลองเพิ่ม http request กันว่าสามารถยิงได้หรือไม่ โดยการเพิ่มที่ functions/index.js
โดยเพิ่ม sayHello
ตามเอกสารของ Cloud function กัน
Ref: https://firebase.google.com/docs/functions/http-events?gen=2nd
const { onRequest } = require('firebase-functions/v2/https')
exports.sayHello = onRequest(
(req, res) => {
res.status(200).json({
message: 'Hello world!'
})
}
)
ถ้าสามารถได้ผลลัพธ์แบบนี้ออกมาถือว่าถูกต้องแล้ว
เราจะทำอะไรกันบ้าง
- API Placeorder ใน Cloud function (โดยเราจะใช้ประยุกต์ใช้กับ router ใน express)
- Setup proxy เพื่อให้ยิงไปยิง API Cloud function ด้วย host เดียวกัน
- เชื่อมกับ Frontend หน้า checkout
- แสดงข้อมูล checkout หน้า Success และเพิ่ม security rule order