2015-11-06 79 views
8

Trong ứng dụng firebase của tôi Tôi đang lưu trữ các đối tượng trong cấu trúc mảng bằng cách sử dụng phương thức push() tạo id duy nhất. Các đối tượng này có thuộc tính con được gọi là "scheduledDate" Làm cách nào để tạo quy tắc indexOn trong firebase để lập chỉ mục trường này. trong các sự kiện mà mỗi người dùng có một nút, hơn là một mảng con của các sự kiện của họ./events/userId/arrayOfEventsCách tạo chỉ mục trên thuộc tính con của đối tượng mảng trong Firebase

Tôi có thể sử dụng orderByChild() để truy xuất thành công các bản ghi theo ngày đã lên lịch sự kiện, nhưng cảnh báo nó về chỉ mục.

Quy tắc của tôi trông như thế này:

"events":{ 
     ".read" : "auth != null", 
     ".write" : "auth != null", 
     ".indexOn": ["scheduledDate"] 
    } 

Mã của tôi làm các truy vấn như sau:

  this.dbEvents = new Firebase(firebaseEventsUrl); 

     var q; 

     q = this.dbEvents.child(userId).orderByChild("scheduledDate").limitToLast(limitToLast); 

     return $firebaseArray(q); 

Dữ liệu của tôi trông như thế này:

  events:{ 
       user1:{ 
        -K2NYCT2_uMwsTSfH58O(push generated):{ 
         description: 'event 1', 
         scheduledDate: 1446730200000 
        }, 
        --K2NyNh660I4k8loar-z:{ 
         description: 'event 2', 
         scheduledDate: 1446730200000 
        }, 
       }, 
       user2:{ 

       } 
      } 
+0

Mô tả dữ liệu hoặc mã không giống với dữ liệu/mã thực tế. Vui lòng hiển thị mẫu dữ liệu của bạn (không có ảnh chụp màn hình) và mã bạn sử dụng để truy vấn. –

+0

được chỉnh sửa để hiển thị mã và cấu trúc dữ liệu mà tôi đang làm việc. Một lần nữa, nó hoạt động, chỉ cần cảnh báo tôi tôi cần lập chỉ mục scheduleDate và tôi không biết cách tạo quy tắc indexOn đó cho một mức độ sâu này. – Stradosphere

Trả lời

19

này nên làm việc:

{ 
    "rules": { 
    "events":{ 
     ".read" : "auth != null", 
     ".write" : "auth != null", 
     "$uid": { 
     ".indexOn": "scheduledDate" 
     } 
    } 
    } 
} 
+0

Tôi nhận được thông báo này: FIREBASE CẢNH BÁO: Sử dụng chỉ mục không xác định. Hãy xem xét thêm ".indexOn": "scheduledDate" tại/events/simplelogin: 82 vào quy tắc bảo mật của bạn để có hiệu suất tốt hơn – Stradosphere

+0

Ah, giờ đây tôi thấy rằng bạn có cấp độ cho người dùng ở đó. Tôi sẽ cập nhật. –

+1

Tác phẩm này, cảm ơn Frank! "$ Uid" có thể được đặt tên là một biến để biểu thị cấp đó không? – Stradosphere

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