1
firebaseに1対多のデータ構造を作成しようとしています。私の2つのオブジェクトは、このように見える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
}
}
}
ここで、どのようにして正確にこのデータをクエリして、すべてのカテゴリで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.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を参照してください。 。 –