2017-11-09 30 views
8

Từ tài liệu "... Phương thức where() lấy ba tham số: trường để lọc, thao tác so sánh và giá trị. So sánh có thể là < , < =, ==,> hoặc> = ..."Toán tử so sánh Firestore - chứa, không chứa, bắt đầu bằng

Các truy vấn mà chúng ta cần phải thực hiện là:

  • equals (==)
  • không bằng (?? ?)
  • nhỏ hơn (<)
  • lớn hơn (>)
  • nhỏ hơn hoặc bằng (< =)
  • lớn hơn hoặc bằng (> =)
  • chứa (???)
  • không chứa (???)
  • bắt đầu với (???)

Trong question này gợi ý là để thực hiện một tìm kiếm văn bản đầy đủ như đàn hồi hoặc Algolia. Tôi không cần tìm kiếm toàn văn bản - tôi chỉ cần những toán tử cơ bản này để tìm kiếm trong các trường được chỉ định. Nhưng vấn đề lớn hơn tôi có là ứng dụng của tôi không hoạt động trong một khoảng thời gian đáng kể và chúng tôi lưu trữ dữ liệu mà chúng tôi cần tìm kiếm ngoại tuyến và ngoại tuyến không phải là tùy chọn (trừ khi bạn nhận được Enterprise ($$) Giấy phép của Algolia - nhưng vẫn có vẻ quá mức cần thiết cho những gì chúng tôi đang tìm kiếm).

Có ai trong số các bạn có bất kỳ giải pháp nào cho địa điểm ("FIELD", "???", "chuỗi") khi "???" không "không bằng", "chứa", "không chứa" hoặc "bắt đầu bằng"?

Bất kỳ ý tưởng nào được đánh giá cao.

+1

Tôi nghĩ google nên đi kèm với một giải pháp cho saga conatain này – suulisin

+0

điểm tốt, và đâu là toán tử OR trong truy vấn. Bạn chỉ có thể làm VÀ? – AdamG

+2

Trong một trong các nhận xét từ Google/Firebase, họ tuyên bố rằng họ đang làm việc trên những thứ này. Điều gì thực sự hữu ích là nếu ai đó từ Google/Firebase có thể đưa ra một dòng thời gian biểu thị. Họ nói đó là ưu tiên cao và tôi hiểu Firestore vẫn đang trong giai đoạn Beta. Nhưng một người không cam kết "chúng tôi hy vọng" có nó trong 3 tháng hoặc 3 năm sẽ thực sự hữu ích. Nếu 3 tháng của nó sau đó có lẽ chúng ta sẽ đi khập khiễng, hoặc 3 năm chúng ta cần tìm kiếm các giải pháp thay thế cho tìm kiếm ngoại tuyến trong Firestore. –

Trả lời

2

Không có các truy vấn gốc "chứa", "không chứa", "bắt đầu bằng" hoặc "kết thúc bằng" trong Cloud Firestore.

Bạn có thể xấp xỉ một rất hạn chế "bắt đầu với" truy vấn sử dụng <>, tuy nhiên:

// All names starting with "Sa" 
db.collection("people") 
    .where("name", ">", "Sa") 
    .where("name", "<", "Saz") 
Các vấn đề liên quan