2017-11-17 11 views
0

は、私はすでに文書に研究し、見つけることができませんでした、次のクエリを作成するために、すべての私のfirebaseをスキャンする必要があります。Firebaseデータベース全体をスキャンする方法は?

1)私は、データベース内のどのように多くのショッピングモールをカウントする必要があります。

2)私はGoogleマップAPIで「.push()」関数に を挿入し、各ポリゴンの緯度と LNGを作成できるように、各商店街からの数字の配列を取得する必要があります。

私は私のfirebaseアーキテクチャがどのように見えるかを説明します:

私は、このJSON に、彼らは(Aliansce、新会社)自らを呼んで、「ショッピングセンター管理者は、」いくつかを持っています。

各管理者用ショッピングモール内には、(Aliansce:Bangu、New York、ny2)および(New Company:luc2, luc1)のショッピングモール があります。

各ショッピングには、それぞれのIDが記載されています。

ID内にIDの日付が記載されています。

IDの日付の中に私は モールに入っている店を持っています。

FIREBASEデータベース:

{ 
    "aliansce" : { 
    "AliansceShopping1" : { 
     "1" : { 
     "loja1" : { 
      "coordenadasLat" : [ -33.564, -35.259, -35.155 ], 
      "coordenadasLng" : [ 149.276, 148.705, 150.1 ], 
      "nomefantasia" : "loja1" 
     } 
     }, 
     "2" : { 
     "loja2" : { 
      "coordenadasLat" : [ 2.258579, -59.008697, -55.493581, 13.727475 ], 
      "coordenadasLng" : [ -95.338008, -82.330197, -14.127078, -37.857544 ], 
      "nomefantasia" : "loja2" 
     } 
     } 
    }, 
    "AliansceShopping2" : { 
     "3" : { 
     "loja1" : { 
      "coordenadasLat" : [ -33.564, -35.259, -35.155 ], 
      "coordenadasLng" : [ 149.276, 148.705, 150.1 ], 
      "nomefantasia" : "Loja1" 
     } 
     }, 
     "4" : { 
     "loja2" : { 
      "coordenadasLat" : [ 2.258579, -59.008697, -55.493581, 13.727475 ], 
      "coordenadasLng" : [ -95.338008, -82.330197, -14.127078, -37.857544 ], 
      "nomefantasia" : "Loja2" 
     } 
     } 
    }, 
    "versoes" : { 
     "bangu" : { 
     "190001" : "13/11/2017", 
     "201701" : "13/11/2017", 
     "201706" : "13/11/2017" 
     } 
    } 
    }, 
    "novoAdm" : { 
    "novoAdmShopping1" : { 
     "1n" : { 
     "loja1" : { 
      "coordenadasLat" : [ -33.564, -35.259, -35.155 ], 
      "coordenadasLng" : [ 149.276, 148.705, 150.1 ], 
      "nomefantasia" : "loja1" 
     } 
     }, 
     "2n" : { 
     "loja2" : { 
      "coordenadasLat" : [ 2.258579, -59.008697, -55.493581, 13.727475 ], 
      "coordenadasLng" : [ -95.338008, -82.330197, -14.127078, -37.857544 ], 
      "nomefantasia" : "loja2" 
     } 
     } 
    }, 
    "novoAdmShopping2" : { 
     "3n" : { 
     "loja1" : { 
      "coordenadasLat" : [ -33.564, -35.259, -35.155 ], 
      "coordenadasLng" : [ 149.276, 148.705, 150.1 ], 
      "nomefantasia" : "Loja1" 
     } 
     }, 
     "4n" : { 
     "loja2" : { 
      "coordenadasLat" : [ 2.258579, -59.008697, -55.493581, 13.727475 ], 
      "coordenadasLng" : [ -95.338008, -82.330197, -14.127078, -37.857544 ], 
      "nomefantasia" : "Loja2" 
     } 
     } 
    }, 
    "versoes" : { 
     "nwVer" : { 
     "190001" : "13/11/2017", 
     "201701" : "13/11/2017", 
     "201706" : "13/11/2017" 
     } 
    } 
    } 
} 

OBS:

function initFireBase(){ 
    var config = { 
     apiKey: "", 
     authDomain: "", 
     databaseURL: "", 
     projectId: "", 
     storageBucket: "", 
     messagingSenderId: "" 
    }; 
    firebase.initializeApp(config); 

    var ref = firebase.database().ref('/'); // INICIA NA RAIZ DO NÓ 
    var rootDatabase = new Array(); 
    var childRootDatabase = new Array(); 
    var childParentDatabase = new Array(); 
    var tst; 
    var tst2; 


    ref.on('value', function(snap){ 
     // PERCORRE TODOS OS "CHILD'S" DO {REF} 
     snap.forEach(function(rootSnapshot){ 
      rootDatabase = [...rootDatabase, rootSnapshot.key]; // CRIA UM ARRAY PARA AS "KEYS" DOS "CHILD'S" 
     }); 

     for(a in rootDatabase){ 


        tst = firebase.database().ref('' + rootDatabase[a]); 

        tst.on('child_added', function(snap){ 
         snap.forEach(function(sna){ 
          childRootDatabase = [...childRootDatabase, sna.key]; 
         }); 
        }); 

        for(b in childRootDatabase){ 
         tst2 = firebase.database().ref('/' + rootDatabase[a] + '/' + childRootDatabase[b]); 
         console.log(tst2.key); 
        } 
     } 



    });   

私ができた:私は

はCODE JAVASCRIPTを使用していますすべてのこれらの子供にアクセスするが、私は座標Latとlngを取得することはできません。

+0

あなたがすでに試したことを示すなら、誰かが助けてくれるはずです。あなたが努力したことを示すだけでなく、あなたがどこにいるかを理解するチャンスを与えてくれます。 –

+0

@FrankvanPuffelen今見てください。ごめんなさい。 –

答えて

0

私はあなたが達成しようとしていることを理解していません。しかし、コードは最適ではないようですので、うまくいけばその説明があなたに役立ちます。

ルートから値をロードしているので、それ以上ネストされたリスナーを使用する必要はありません。代わりに、(ネストされた)スナップショットを繰り返して、必要なデータにアクセスできます。あなたのコードが現在行っていることをより慣れ親しんで行う方法は次のとおりです。

ref.on('value', function(snap){ 
    mallKeys = []; 
    snap.forEach(function(adminSnapshot){ 
     adminSnapshot.forEach(function(mallSnapshot) { 
      mallKeys.push(mallSnapshot.key); 
     }); 
    }); 
    console.log("There are "+mallKeys.length+" malls"); 
}); 
+0

私はモールストアのLat座標とcoordinatesLngのすべての値を取りたいと思います。私の問題はこれです、私はそこに手動でパスなしで得ることができません。 –

+0

私のコードスニペットは、パスを知らなくても、2つのレベルをあなたのデータ構造に繋ぐ方法を示しています。ツリーに深く入る必要がある場合は、ネストされたループを追加する必要があります。 –

+0

ありがとう、私はあなたに新しい質問をしました。あなたが助けてくれれば感謝します。https://stackoverflow.com/questions/47383389/how-to-convert-array-from-datasnapshot-to-number-array# –

関連する問題