TIL: Query builder for Firestore

Newsletter May 25, 2022

Bài toán

  • Client gửi lên query string trong đó số lượng field không cố định, mục đích để filter data từ Firestore.

  • Lấy ví dụ query NFT của StepN https://stepn.guide

    - /api/nft?efficiency=5&efficiency=6&comfort=7&resiliense=8

    hoặc - /api/nft?efficiency=5&luck=6&comfort=7

    hoặc - /api/nft?efficiency=5&comfort=7&resiliense=8

    hoặc - /api/nft?luck=6&comfort=7

Giải pháp

  • Firestore hỗ trợ query các loại operator

    • < less than

    • <= less than or equal to

    • == equal to

    • > greater than

    • >= greater than or equal to

    • != not equal to

    • array-contains

    • array-contains-any

    • in

    • not-in

  • Firestore hỗ trợ query nhiều condition với nhau như:

Trong trường hợp này, mình dùng Node.js và Express framework. Các query string sẽ parse ra như này:

  • có thể strict được query string params
  • dynamic params
  • có thể đổi operator theo từng params

Tags