Firebase实时数据库:如何获取父节点的值

时间:2020-01-27 07:43:14

标签: javascript firebase firebase-realtime-database

比方说,我的数据库节点结构如下:每个用户设置自己偏好的用户名,由Firebase auth分配的他/她的UID记录在该用户名下。

"uid_match":
 {
   "username_1" : {
      "uid" : "firebase_uid_1"
    },
   "username_2" : {
      "uid" : "firebase_uid_1"
  }

我正在尝试编写代码以通过firebase uid提取用户名。它将查找特定的firebase uid并返回用户名,该用户名具有其自己的URL。

下面是我编写的代码的一部分,但是它返回“ / uid_match”,而不是“ / username_1”或“ / username_2”。

 let ref=firebase.database.ref('/uid_match');
 let user=firebase.auth().currentUser;
 ref.orderByChild('uid').equalTo(user.uid).once('value', function(snapshot) {
     window.location.href='/'+snapshot.key;
 })

问题:提取“ username_1”或“ username_2”而不是“ uid_match”的正确查询代码是什么?提前谢谢。

1 个答案:

答案 0 :(得分:1)

您需要在snapshot内进行迭代,以检索键username_1_username_2

 let ref=firebase.database.ref('/uid_match');
 let user=firebase.auth().currentUser;
 ref.orderByChild('uid').equalTo(user.uid).once('value', function(snapshot) {
     snapshot.forEach(function(childSnapshot){
     window.location.href='/'+childSnapshot.key;
   });
 });