2016-12-22 13 views
1

私は自分のデータベースに保存しているイベントがあります。Firebaseプッシュキーの取得方法は?

events 
    my_party123 
    info 
     -KZbdiR_PBrAwxYvUR4U 
     name: 'John' 
     city: 'Los Angeles' 
    my_party124 
     ... 

として保存されていますが、私はこの情報を取得しようとしており、それを得ることはできません。

私はそれを呼び出したときに

ref 
    .child('events') 
    .child('my_party123') // I also tried .push('my_party123') 
    .once('value') 
    .then(snapshot => { 
    console.log(snapshot.key) // my_party123 
    console.log(snapshot.val().info) 
    // this shows object with 
    // "-KZbdiR_PBrAwxYvUR4U" property, this is the pushed key property 
    im trying to access 
    }) 

.pushedは、新しいキーを作成してみました - どのように私はちょうど私のデータベースに格納されている値にアクセスできますか?

+0

私は 'Object.keysを使用することができますが、[0]'詳細を取得することができますが、保存している場合、これはハック –

+0

のような非常に感じています一意のキーを持つ値、あなたのコメントは行く方法になるようだ。あなたがデータ構造を再編成する能力を持っているなら、 'info'を一意の識別子を与える代わりに' my_party123'の子にすることができますか?その後、 'firebase.database.ref( 'events/my_party123/info')'を実行して、 – imjared

+0

@imjaredに行こうとしました。それは私の最後の誤字です。私は誤って構造を入れ替えた。あなたが指定した方法で保存されています –

答えて

4

あなたがイベントで指し示すユニークなイベントのURLを持って探しているなら、私はより多くのようなものであるためにあなたのデータ構造への変更をお勧めします:あなたは、あなたのコードでは、次に

events 
    -KZ123PUSHID 
    name: 'John' 
    location: 'Los Angeles' 
    -KZ124PUSHID 
    name: 'Morgan' 
    location: 'New York City' 
eventNames 
    my_party_123: '-KZ123PUSHID' 
    sweet_nyc_part: '-KZ124PUSHID' 

ができような何か:(。snapshot.val()情報)

var eventNamesRef = firebase.database().ref('eventNames'); 
var eventsRef = firebase.database().ref('events'); 

var event;  
eventNamesRef.child(nameFromUrl).once('value').then(nameSnap => { 
    eventsRef.child(nameSnap.val()).on('value', eventSnap => { 
    event = eventSnap.val(); 
    }); 
}); 
+0

うわー、これは完璧です。私は私がやっていると感じるようにそれを一緒にハッキングよりもはるかに良い。マイケルに感謝! –