TIL: Query builder for Firestore
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 toarray-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