2017-10-21 4 views
0

私はUIDを使用して電子メールを取得しようとしています。これは私のfirebaseデータベースは次のようになります。反応の火災基地からのUIDを使用して電子メールを取得するにはどうすればいいですか?

現在

click here for picture of database

、これは私がしようとしているものですが、それは動作していないようです。

var newEmail = ''; 
var database = app.database().ref('User/'); 
database.orderByChild().equalTo(uid).on('value', function(snapshot) { 
    newEmail = snapshot.val().email; 
}) 

さらに、ハッシュされたスナップIDがあるように電子メールをUidに追加する必要がありますか?

答えて

0

まず、参照パスが正しくありません。あなたのスクリーンショットには、別の親ノードUidがあります。

var newEmail = ''; 
var database = app.database().ref('User/Uid'); 
... 

第二に、あなたはパスパラメータを渡さずorderByChildを照会されますが、とにかくorderByKeyを使用する必要があります。ただし、参照を照会する必要はありません。その値を必要とするスナップショットのキーを知っているので、UIDを補間して直接パスを作成することができます。

app.database().ref(`User/Uid/${uid}`).on('value', function(snapshot) { 
    newEmail = snapshot.val().email; 
}); 

最後に、参照を聞いています。値が1回だけ必要な場合は、同じ方法で.once関数を使用することができます。これは、その名前が示すように、一度トリガーされることを意味します。

app.database().ref(`User/Uid/${uid}`).once('value', function(snapshot) { 
    newEmail = snapshot.val().email; 
}); 
+1

スナップショット機能の外でnewEmailも使用していたことを除いて、2時間、私はあなたのバージョンを含むすべてを試したので、私を得た非同期部分でした。私はスナップショット機能の中のすべてを移動し、今それはすべて動作します。 – Daven99

関連する問題