2015-01-12 44 views
13

dữ liệu căn cứ hỏa lực của tôi trông giống như sau:truy vấn căn cứ hỏa lực bởi phạm vi ngày

{ 
    "lambeosaurus": { 
    "date" : 1420753443, 
    "length" : 12.5, 
    "weight": 5000 
    }, 
    "stegosaurus": { 
    "date" : 1429053443, 
    "length" : 9, 
    "weight" : 2500 
    } 
} 

Tôi đang tìm kiếm một cách để lọc ngày sử dụng một phạm vi ngày tùy chỉnh. Tôi đã xem một số ví dụ trực tuyến nơi họ đã truy vấn ngày, nhưng dấu thời gian luôn là chìa khóa không thể xảy ra trong trường hợp của tôi.

Các phần có liên quan là tài liệu có thể được tìm thấy ở đây: https://www.firebase.com/docs/web/guide/retrieving-data.html#section-queries

Điều quan trọng là thời gian thực cập nhật vẫn được hỗ trợ. Tôi cũng chỉ muốn xác định số lượng tất cả các mục phù hợp với tiêu chí. Tôi không quan tâm đến điểm dữ liệu cho mỗi nút.

Trả lời

28

Có vẻ như bạn có thể sử dụng phương pháp orderBychild() để đặt hàng bằng khóa hoặc thuộc tính con (ví dụ: weight, length hoặc date). Và nếu bạn chuỗi rằng việc sử dụng startAt() & endAt(), chúng ta có thể xây dựng các truy vấn mà bạn đang tìm kiếm:

var startDate = 14200000000; 
var endDate = 14300000000; 

ref.orderByChild("date").startAt(startDate).endAt(endDate) 
    .on("child_added", function(snapshot){ 
    console.log("got the data!", snapshot); 
    }); 
+0

Có cách nào để xác định số lần mà phù hợp với "startAt" & tiêu chí 'endAt', nhưng mà không phải tải từng mục. Bằng cách thay đổi từ .on ('child_added') thành .on ('value'), điều này có thể đạt được nhưng sau đó nó không còn đồng bộ thời gian thực. – Paul

+1

Điều này có thể được mở rộng đến tọa độ GPS không? I E. có một 'startAt()' và 'endAt' trên vĩ độ và kinh độ? – Sauron

+0

nó có hoạt động với bất kỳ ai không? –

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