เริ่มใส่ Firestore ให้ครบกัน
สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video
Step ต่อไป
เราจะเริ่มมาเพิ่มส่วนของการดึง ฐานข้อมูลทั้งเว็บกันทั้งฝั่งของ
- หน้าเว็บ Frontend Easy commerce ที่ User ใช้
- หน้าเว็บ Backoffice ที่ Admin ใช้
โดยเราจะใช้ข้อมูลทั้งหมดผ่าน Cloud Firestore Service Database ของ Firebase กัน
Cloud Firestore คืออะไร ?
Cloud Firestore (จากนี้จะขอเรียกสั้นๆว่า Firestore) คือ NoSQL document database ที่สามารถจัดการเก็บข้อมูล, sync ข้อมูลและ query ข้อมูลออกมาได้โดย Firebase นั้นได้ทำการเตรียม SDK ที่สามารถใช้งานได้ทั้งฝั่ง mobile และ web application (ดังเช่น Vue ที่เรากำลังใช้อยู่)
สิ่งที่เราจะได้จากการใช้ Firestore
- เราจะได้ Database สำหรับเก็บข้อมูลแบบเดียวกับ NoSQL (มีการเก็บข้อมูลเป็น collection ที่เหมือนกับ table ใน SQL และ document ที่เหมือนกับ row ใน SQL)
- สามารถทำการ subscription เพื่อทำ document แบบ realtime ได้ (เดี๋ยวเราจะเก็บไปเล่าในหัวข้อ Realtime Database พร้อมกันทีเดียว)
- ไม่ต้องกังวลเรื่องจะล่ม เพราะ Firebase นั้นจะเป็นคนจัดการเรื่องของ Server ให้ = เป็น concept ของ Backend as a service อยู่แล้ว
องค์ประกอบของ Firestore
ประกอบด้วย
- collection = group ของ document ที่ทำการรวมข้อมูล document ที่เป็นชุดเดียวกันเอาไว้ เช่น
- ถ้า document ทั้งหมดเกี่ยวกับ users = เราก็จะสร้าง collection users เอาไว้สำหรับเก็บ document ทั้งหมดที่เกี่ยวกับ users
- document = ข้อมูลตัวเดียว (single data) ที่ประกอบไปด้วย field ต่างๆในข้อมูล (เปรียบเหมือนข้อมูลในแต่ละ column ของ SQL) โดยข้อมูลนั้นจะประกอบไปด้วย
- Field: key - value ที่เป็นคู่ของข้อมูลชุดนั้น
- Sub-collection: collection ที่มีการเก็บข้อมูลซ้อนลงไปอีก 1 ชั้น
ตัวอย่าง Structure ที่มีการเก็บใน Firestore
ประเภทข้อมูลที่สามารถเก็บได้ของ Firestore ก็จะมีตั้งแต่
- string: ข้อมูลตัวอักษร
- number: ตัวเลขจำนวนเต็มหรือทศนิยม
- boolean: true, false
- map (Object): key, value object (เหมือนๆ JSON)
- array: list ของข้อมูล
- null: ค่าว่างเปล่า (ใช้สำหรับการให้ field นั้นมีการแสดงอยู่ใน document ออกมา)
- timestamp: เก็บข้อมูล Datetime เอาไว้
- geopoint: เก็บข้อมูล lat, lng (ที่ใช้สำหรับเก็บตำแหน่งบนพื้นที่โลก)
- reference: ใช้สำหรับอ้างอิงไปยัง document ตัวอื่นใน Firestore (เก็บเป็น path ของ document)