Firebase Yalnızca API onun orderByChild
ve equalTo
yöntemlerle bir seviye derin (veya with a known path) çocukları filtre sağlar.
Yani sadece tüm verileri almak ve ona istemci tarafı filtreleme seçeneği bırakır mevcut veri yapısını genişleterek/değiştirmeden:
var ref = firebase.database().ref('Users');
ref.once('value', function(snapshot) {
snapshot.forEach(function(userSnapshot) {
var blogs = userSnapshot.val().blogs;
var daBlog = blogs['efg'];
});
});
Bu tabii son derece verimsiz ve zaman ölçek olmaz önemsiz sayıda kullanıcı/blogunuz var.
{Blogs:
"abc": "1234567",
"zyx": "1234567",
"efg": "7654321",
"hij": "7654321"
}
Sonra hızlı blog erişebilirsiniz:
Yani bu ortak çözüm bunu bulunduğu yola aradığınız anahtar haritalar sizin ağacına sözde endeksi etmektir kullanarak: Ayrıca daha iyi bir kullanım durumunun ve Firebase en sınırlamaları sığdırmak için verilerinizi yeniden eğer yeniden isteyebilirsiniz
var ref = firebase.database().ref();
ref.child('Blogs/efg').once('value', function(snapshot) {
var user = snapshot.val();
ref.child('Blogs/'+user+'/blogs').on('value, function(blogSnapshot) {
var daBlog = blogSnapshot.val();
});
});
. Verilerinizi yapılandırmak için bazı iyi belgelere sahipler, ancak NoSQL/hiyerarşik veritabanlarında yeni olan insanlar için en önemli olan "avoid building nests".
Ayrıca bkz. Http://stackoverflow.com/questions/24869180/query-hierarchical-data-structure-in-firebase – Kato
Kullanıcı kayıtlarının bir parçası olarak blogların olması için gerçekten hiçbir neden yok. Bir kullanıcının mantıksal bir "özniteliği" değil, kendi veri yapıları, amacı ve okuma/yazma senaryolarıyla ayrı bir varlıktırlar. Bunları (Frank'in bahsettiği gibi) bölmek ve işleri basit ve doğrudan yapmakla başlarım. – Kato