Skip to main content

เริ่มใส่ Firestore ให้ครบกัน

e-commerce-firebase-firestore-crud สามารถดู video ของหัวข้อนี้ก่อนได้ ดู video

Step ต่อไป

intro-01

เราจะเริ่มมาเพิ่มส่วนของการดึงฐานข้อมูลทั้งเว็บกันทั้งฝั่งของ

  • หน้าเว็บ 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

ประกอบด้วย

  1. collection = group ของ document ที่ทำการรวมข้อมูล document ที่เป็นชุดเดียวกันเอาไว้ เช่น
  • ถ้า document ทั้งหมดเกี่ยวกับ users = เราก็จะสร้าง collection users เอาไว้สำหรับเก็บ document ทั้งหมดที่เกี่ยวกับ users
  1. document = ข้อมูลตัวเดียว (single data) ที่ประกอบไปด้วย field ต่างๆในข้อมูล (เปรียบเหมือนข้อมูลในแต่ละ column ของ SQL) โดยข้อมูลนั้นจะประกอบไปด้วย
  • Field: key - value ที่เป็นคู่ของข้อมูลชุดนั้น
  • Sub-collection: collection ที่มีการเก็บข้อมูลซ้อนลงไปอีก 1 ชั้น

ตัวอย่าง Structure ที่มีการเก็บใน Firestore

intro-02

ประเภทข้อมูลที่สามารถเก็บได้ของ Firestore ก็จะมีตั้งแต่

intro-03

  • 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)