2016-04-01 14 views

cevap

2

Hayır. Fakat kinda.

Joker sorgusu yapamazsınız, ancak verilerinizi buna izin verecek şekilde yapılandırabilirsiniz. Disk alanı ucuz Unutmayın: Örneğin

, Burada başka düğümünde çürümüş veriler yapısı

users 
    uid_0 
    name: "Leroy" 

Mağaza var Ler

ile başlar biz isim kullanıcıları için eşleşmeleri bulmak istiyorsunuz.

decomposed 
    uid_0 
    L: true 
    Le: true 
    Ler: true 
    Lero: true 
    Leroy: true 

sonra

ref.queryOrderedByChild("Ler").queryEqualToValue(true).observeEventType(.ChildAdded, 
    withBlock: { snapshot in 
        print(snapshot.key) 
       }) 

Ler'e eşit çocuklar için gerçek değeri için çürümüş düğümde bir sorgu gerçekleştirmek Ve Firebase yana

+2

İhtiyacım olanı elde etmenin ilginç bir yolu. Tek sorun, bir ismin herhangi bir kısmı için bir joker yapmam gerektiğidir (ör. * Roy *). Ayrıca, db’imde ~ 200 bin kişiye sahip olacağım. Ölecek mi? – MoreScratch

+0

Ölçeklendirilebilir, (Firebase ölçeklenebilir), büyük olasılıkla bu boyut için bir veri kümesi gerçekçi değildir. Otomatik doldurma gibi bir şey arıyorsanız, söyleyeceğiniz ilk birkaç karakterin adını yazdığınızda, daha gerçekçi olur. Bir isim atabileceğimiz bir ObjC sınıfı hazırladık ve adı tüm aranabilir kombinasyonlara ayıracak ve sonra bunu bir Firebase düğümünde saklayacak; Bununla birlikte oldukça otomatik hissediyor, ancak binlerce isim ile çalışmayı denemedik. Firebase ekibi için muhtemelen iyi bir soru. – Jay

+1

Veritabanınızın tüm dize alanlarında bir joker arama yapmak istediğinizi düşünün, her bir alanın N değerini – Oswaldo

-2

desteklemediği uid_0 snapshot.key olacak joker arama firmamız için Apigee BaaS ile gitmeye karar verdi.

+3

bu sorunun cevabı nasıl? – mamu

+0

Sorudaki döngüyü kapatmak zorundaydım. Firebase içinde bir çözümün bulunmadığı açıktı, bu yüzden BaaS sağlayıcımızı değiştirmeye karar verdik. Özünde, belgelere ve soruya verilen cevaplara dayanarak görebileceğimiz bir cevap yoktur. – MoreScratch

+0

Sorununuzu nasıl çözdüğünüze dair herhangi bir açıklama sunmuyorsunuz ya da sorunuzu gerçekten cevaplıyor muydunuz? – Learn2Code

6

Biliyorum biraz zaman geçti ama başkalarının ilgisini çekebileceğini düşündüm. foo* gibi şeyler için bir joker karakter arama "sahte" (temelde belirli bir dizeyle başlayan değerleri arayabilirsiniz).

iOS & Swift için bu şekilde görünecektir:

dbReference.child("person").queryOrdered(byChild: "name").queryStarting(atValue: "foo").queryEnding(atValue: "foo\u{f8ff}").observe(.childAdded) { (snapshot: FIRDataSnapshot) in 
    print("\(snapshot.key) - \(String(describing: snapshot.value))") 
} 

Bunun uç anahtar başından + çok yüksek kod noktasında eşittir name özellik için bir başlangıç ​​ve bitiş değerlerini kullanıyor yapar Unicode aralığı. Unicode'daki çoğu normal karakterden sonra olduğu için, sorgu foo ile başlayan tüm değerlerle eşleşir.

+0

Parlak cevap arkadaş .. şerefe –