8

Từ the docs:Làm thế nào để thực hiện các truy vấn phức hợp với logic HOẶC trong Cloud Firestore?

Bạn cũng có thể chuỗi nhiều() phương pháp để tạo truy vấn cụ thể hơn (lôgic VÀ).

Tôi làm cách nào để thực hiện truy vấn OR? Ví dụ:

  1. Hãy cho tôi tất cả các tài liệu có lĩnh vực statusopen HOẶC upcoming
  2. Hãy cho tôi tất cả các tài liệu có lĩnh vực status == open HOẶC createdAt <= <somedatetime>

Trả lời

8

OR không được hỗ trợ như thật khó cho máy chủ để mở rộng quy mô (yêu cầu giữ trạng thái để loại trừ). Công việc xung quanh là phát hành 2 truy vấn, một truy vấn cho từng điều kiện và tính toán trên máy khách.

+0

chính xác những gì tôi đang làm ngay bây giờ. Được rồi, cám ơn! – ProblemsOfSumit

+10

Tôi hiểu câu trả lời, nhưng Nếu tôi muốn nhận tất cả các tài liệu mà trường 'trạng thái' là' a' HOẶC 'b' HOẶC' c' HOẶC '...' (giả sử 50 HOẶC). Tôi có cần thực hiện 50 truy vấn và tham gia không? Nó không xuất hiện siêu tối ưu? Liệu tôi có sai? Có cách nào tốt hơn để tiếp cận điều này? Cám ơn. – nerotulip

+0

@nerotulip bất kỳ thành công nào về điều này? – Babar

-1

bạn có thể liên kết hai Quan sát bằng cách sử dụng toán tử hợp nhất rxjs. Ở đây bạn có một ví dụ.

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/merge'; 

... 

getCombinatedStatus(): Observable<any> { 
    return Observable.merge(this.db.collection('foo', ref => ref.where('status','==','open')).valueChanges(), 
          this.db.collection('foo', ref => ref.where('status','==','upcoming')).valueChanges()); 
} 

Sau đó, bạn có thể đăng ký các bản cập nhật mới Quan sát bằng cách sử dụng phương pháp trên:

getCombinatedStatus.subscribe(results => console.log(results); 

Tôi hy vọng điều này có thể giúp bạn, lời chào từ Chile !!

Các vấn đề liên quan