2017-11-17 3 views
0

나는 이미 문서에 연구하고 찾을 수 없습니다 다음 쿼리를 만들기 위해 내 모든 중포 기지를 스캔해야합니다전체 Firebase 데이터베이스를 검사하는 방법은 무엇입니까?

1) 나는 데이터베이스에 얼마나 많은 쇼핑몰을 계산해야합니다.

2) 나는 나는 ".push()"로 구글지도 API의 기능을 를 삽입하고 각 다각형의 위도와 LNG를 만들 수 있도록 각 쇼핑몰에서 숫자의 배열을 얻을 필요가있다.

나는 나의 중포 기지 아키텍처를 보는 방법을 설명 할 것이다 :

나는이 JSON 그들이 (Aliansce, 새로운 회사) 자신을 호출 할 몇 가지 "쇼핑 센터 관리자"를 가지고있다.

각 관리자 쇼핑몰 내에는 (Aliansce : Bangu, New York, NY2) 및 (New Company : luc2, luc1)의 여러 쇼핑몰 이 있습니다.

각 쇼핑 내역에는 ID가 있습니다.

ID 내에 ID의 날짜가 있습니다.

ID의 날짜 안에 쇼핑몰에있는 상점이 있습니다.

중포 기지의 DATABASE :

{ 
    "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); 
        } 
     } 



    });   

내가 할 수 있었다 : 나는

코드 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

쇼핑몰의 좌표와 좌표 값의 모든 값을 가져오고 싶습니다. 내 문제는 이것입니다. 수동으로 경로를 사용하지 않고는 거기에 갈 수 없습니다. –

+0

내 코드 단편은 경로를 알지 못해도 두 레벨을 데이터 구조 깊숙이 루프하는 방법을 보여줍니다. 트리 깊숙한 곳으로 가야 할 경우 중첩 루프를 추가해야합니다. –

+0

고맙습니다. 새로운 질문을했습니다. 고마워 할 수 있다면.https://stackoverflow.com/questions/47383389/how-to-convert-array-from-datasnapshot-to-number-array# –

관련 문제