Angular Fire Firestore Query

AngularFirestore Query ข้อมูลจาก firestore แบบจับมือทำ 🤝

Akkaradet13
incubate.co.th
3 min readAug 5, 2020

--

Angular Fire Firestore Query

ทำ web ด้วย Angular เชื่อมต่อกับ Firebase Firestore โดยใช้ AngularFire เพื่อที่จะ query ข้อมูลให้ออกมาสวยงาม สะดวกสะบายกับผู้ที่มาใช้งาน web ของเรา แต่ไม่รู้จะใช้ท่าไหน ในบทความนี้ผมขอเสนอวิธีการ query ข้อมูลจาก Firebase Firestore แบบง่ายๆไม่พิมพ์เยอะเจ็บนิ้ว

การ Query ข้อมูลจาก Firestore มี Options ที่ใช้กันบ่อยๆดังนี้

  • where คือการดึงข้อมูลมาตามเงื่อนไขที่กำหนดไว้
  • orderBy คือการเรียงตามฟิลด์ที่ระบุจากมากไปน้อยหรือจากน้อยไปมาก
  • limit คือการ Set จำนวนสูงสุดที่จะ Return
  • startAt คือการเริ่มต้น Document ตัวที่ Set (รวมตัวที่ set ด้วย)
  • startAfter คือการเริ่มต้นเอกสารหลังจาก Document ตัวที่ Set (ไม่รวมตัวที่ set)
  • endAt คือการสิ้นสุด Document ตัวที่ Set (รวมตัวที่ set ด้วย)
  • endBefore คือการสิ้นสุด Document ตัวที่ Set (ไม่รวมตัวที่ set)

มาเริ่มกันเลย 🏃‍♂️

ตัวอย่างข้อมูล

ข้อมูลที่ใช้ในตัวอย่างอยู่ใน collection items มี document ทั้งหมด 5 doc แต่ละ doc มี field มี key ที่เป็น number และ value ที่เป็นตัวเลข 1–5

where

orderBy

limit

startAt

startAfter

endAt

endBefore

มาลองใช้งานจริงกันเลย

  1. ติดตั้ง angular fire
    ng add @angular/fire
  2. สร้าง component testQuery
    ng g c testQuery
  3. สร้าง Interface item
    ng g iterface item
  4. เพิ่มตัวแปล number ที่มี type เป็น Number ใน item.ts

5. Import AngularFirestore, AngularFirestoreCollection และ Observable ใน file test-query.component.ts

6. สร้างตัวแปล itemCol ที่มีชนิดเป็น AngularfirestoreCollection และ item$ ที่มีชนิดเป็น Observable ใน file test-query.component.ts

7. เพิ่มตัวแปล afs ที่มีชนิดเป็น AngularFirestore ใน constructor

8. จัดการกับ function ngOnInit

โดยที่จะเอาข้อมูลที่มีค่ามากกว่า3 เรียงจากน้อยไปมากและเริ่มที่ 2 query มาห้ามเกิน 20 ตัว

9. แก้ไขหน้า test-query.component.html

เพียงเท่านี้ก็ได้ข้อมูลตามที่ต้องการ 👍

เก็บตก

เลือกใช้ให้เหมาะกับสิ่งที่เราต้องและการ Query ที่ดีควรจะกำหนด limit ในการ Query เพื่อความรวดเร็ว เวลาใช้งานจริง ส่วนใหญ่จะใช้คำสั่ง where + orderBy + limit + startAfter สำหรับ ดึงข้อมูล next page และแนะนำ limit ไม่ให้เกิน 20 documents

อ้างอิง

--

--