Я пытаюсь создать структуру данных от 1 до многих в firebase. Мои два объекта выглядят так:1 для многих запросов firebase
category:
{
cat1: {
name: 'Category 1'
},
cat2: {
name: 'Category 2'
}
}
products:
{
product1: {
name: 'Product 1',
categories: {
cat1: true
}
},
product2: {
name: 'Product 2',
categories: {
cat1: true,
cat2: true
}
}
}
Теперь, как именно я запрошу эти данные, чтобы получить say product2 со всеми категориями? Я попытался это, который получает меня необходимые данные, но, кажется, неэффективны и не соответствует, как документы, кажется, предлагают вам это сделать ....
var ref = new Firebase("https://<my-firebase-url>/products/product2");
var catRef = new Firebase("https://<my-firebase-url>/category");
ref.once('value', function(snap) {
var result = snap.val();
Object.keys(result.categories).map(key => {
catRef.child(key).once('value', function(category){
... //add category to array etc
}
}
}
Документы предлагают использовать child_added события, но как это имеет смысл, когда я хочу весь список не только при добавлении ребенка? (https://www.firebase.com/docs/web/guide/structuring-data.html):
// List the names of all Mary's groups
var ref = new Firebase("https://docs-examples.firebaseio.com/web/org");
// fetch a list of Mary's groups
ref.child("users/mchen/groups").on('child_added', function(snapshot) {
// for each group, fetch the name and print it
String groupKey = snapshot.key();
ref.child("groups/" + groupKey + "/name").once('value', function(snapshot) {
System.out.println("Mary is a member of this group: " + snapshot.val());
});
});
Документов на firebase.com теперь осуждаются. Используйте новый сайт: firebase.google.com, относящийся к 'child_added', он не только получает вновь добавленный ребенок, но и существующие дочерние элементы. Посмотрите на Firebase [руководство по обновлению] (https://firebase.google.com/support/guides/firebase-web). –
Об эффективности «петлевой нагрузки». Это общая проблема разработчиков, новых для Firebase. Но Firebase загружает элементы по одному соединению и запросам конвейеров, поэтому обычно это довольно быстро для наборов данных с разумным размером. См. Http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786 для более подробного объяснения , –