2016-04-07 20 views
1

Sorununun yalnızca firebase kullanarak bir çözümü bulunmadığından neredeyse eminim, ama denememe izin verin. Başka bir değere göre sipariş vererek belirli bir düğüme sahip olmak zorundayım, daha iyi bir açıklama: Tüm çocukları "empregado" 'yu ​​"veri" ile sipariş etmem gerekiyor. Bu verilerim:Firebase equalBir mülk ve siparişBaşka bir başka

ref.child("ponto").orderByChild("empregado").equalTo("-KEHl6qtSG7UkZU8Gi4t").on("child_added", function(snapshot) { 
         ponto = snapshot.val();}); 

ve mükemmel Verileri var, ama çocuk tarafından "veri" sipariş gerekir, bu yüzden bu olabileceğini düşündüm:

"ponto" : { 
"-KEggOdWvibrLfpptyfX" : { 
    "data" : "04/04/2016", 
    "empregado" : "-KEHl6qtSG7UkZU8Gi4t", 
    "entradaM" : "07:03", 
    "entradaT" : "12:01", 
    "equipe" : "-KDYYDYMqc0l0irnOGjP", 
    "horas" : "09:00", 
    "horas100" : "", 
    "horas50" : "", 
    "obra" : "-KDcuiLXj8IgVB5RalLS", 
    "observacao" : "tsts", 
    "saidaM" : "11:01", 
    "saidaT" : "17:00" 
}, 
"-KEggYHd7bBkv04XSx2C" : { 
    "data" : "05/04/2016", 
    "empregado" : "-KEHl6qtSG7UkZU8Gi4t", 
    "entradaM" : "07:01", 
    "entradaT" : "12:02", 
    "equipe" : "-KDYYDYMqc0l0irnOGjP", 
    "horas" : "09:00", 
    "horas100" : "", 
    "horas50" : "01:00", 
    "obra" : "-KDcuiLXj8IgVB5RalLS", 
    "observacao" : "tsts", 
    "saidaM" : "11:01", 
    "saidaT" : "18:00" 
},...more data with repeated key "empregado" and not repeated too 

Yani, ben yaptım böyle bir şey çözülür:

ref.child("ponto").orderByChild("data").orderByChild("empregado").equalTo("-KEHl6qtSG7UkZU8Gi4t").on("child_added", function(snapshot) { 
         ponto = snapshot.val();}); 

Ama Ben Fikirler iki kez kullanmak "orderByChild" olamaz diye ??? Şimdiden beri teşekkürler.

+0

Bkz. Http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase –

cevap

0

Doğru, siparişinizByChild, sorgulama yaptığınız alanı tanımlar, böylece iki kez kullanılamaz. Eğer 20160404. olarak kaydetmesini isteyebilirsiniz kadar sonra sıralama ile bir sorunu haline gelebilir 04/04/2016 gibi tarihleri ​​kullanarak da

,

Kişisel geliştirme platformu belirtilmemişse ancak veri yüklenmesi olabilir ve kodda oldukça kolay sipariş verildi.

bir çözüm olarak

, daha sonra sorgu burada konsept biz, sorgulamak istediğini biliyorum ki

ref.queryOrderedByChild("id_date_index").queryStartingAtValue("-KDYYDYMqc0l0irnOGjP_0") 
     .observeEventType(.ChildAdded, withBlock: { snapshot in 

     if (snapshot.value is NSNull) { 
      print("not found)") 

     } else { 
      print(snapshot.value) 
     } 

    }) 

olacağını kombine endeksi

"-KEggOdWvibrLfpptyfX" : { 
    "data" : "04/04/2016", 
    "empregado" : "-KEHl6qtSG7UkZU8Gi4t", 
    "entradaM" : "07:03", 
    "entradaT" : "12:01", 
    "equipe" : "-KDYYDYMqc0l0irnOGjP" 
    "id_date_index": "-KDYYDYMqc0l0irnOGjP_20160404" 
}, 
"-KEggYHd7bBkv04XSx2C" : { 
    "data" : "05/04/2016", 
    "empregado" : "-KEHl6qtSG7UkZU8Gi4t", 
    "entradaM" : "07:01", 
    "entradaT" : "12:02", 
    "equipe" : "-KDYYDYMqc0l0irnOGjP" 
    "id_date_index": "-KDYYDYMqc0l0irnOGjP_20160504" 
} 

faydalanabilirler bu hangi durumda "-KDYYDYMqc0l0irnOGjP_0" yani bu statik.

değişken değişken sayısal ve biz queryStartingAt ile sıfırdan bizim sorgu başlatmak sıralı olabileceği için tarih yüzden değişken

static_variable

ile statik birleştiren bir indeks zanaat geçerli:

-KDYYDYMqc0l0irnOGjP_0

, daha sonra istenen tüm düğümleri alacak ve bunları sırayla sipariş edecektir.

+0

Çok teşekkür ederim Frank – Jorgeley