2017-05-04 41 views
0

我的火力分贝结构给出,如何访问firebase db子对象元素?下面

users 
fb-user-key1 
    user1-details1 
    Tags 
     Tag-key1  
      "name":"value" 
     Tag-key2 
      "name":"value" 

fb-user-key2 
    user1-details2 
    Tags 
     Tag-key1  
      "name":"value" 

标签-密钥1 &用户密钥的由火力生成具有推()。 firebase代码访问的内容是,

var fbref = firebase.database().ref("users"); 
fbref.child("Tags").on("child_added", function(e){ 
    var Tagobj = e.val().name; 
    console.log(Tagobj); 
}); 

这一个没有返回任何东西。我无法访问上述数据结构中的name:value对。 ' 添加修改后的代码,上述代码的

firebase.database().ref("users").on("child_added",function(e‌​) { var Tagobj = e.val().Tags; }); 

输出是output data structure

如何访问该名称值对??火力点钥匙是问题? 没有得到,我错了。欣赏你的投入。

+0

你的用例是什么?在创建用户后,用户的“标签”是否更新过?您的应用中是否有商店,您可以在其中添加新值并触发重新渲染? – ArneHugo

+1

'标签'不是'用户'的孩子。 – 2017-05-04 08:39:43

+0

@ArneHugo,是的标签经常更新新名称值对。 – user1322692

回答

0

由于Tags是每个用户的子属性,因此您必须从每个用户对象读取它。

如果你希望所有Tags为所有用户,假设Tags为每个用户不被更新用户创建后,你可以这样做:

tagsPerUserId = {}; 

firebase.datatabs().ref('users').on('child_added', function(snap) { 
    tagsPerUserId[snap.key] = snap.value().Tags; 
    // TODO: Notify view that tagerPerUserId is updated and needs to be re-rendered 
    console.log(`Tags for userId ${snap.key}: ${snap.value().Tags}`); 
}); 

这种方式,您也将获得新用户的时候Tags它们已创建,但您不会获得现有用户Tags的更新。

+0

为我的问题添加了新的代码和输出格式。请检查 – user1322692

+0

在你的例子中[示例结果](https://i.stack.imgur.com/zEXJx.png)你似乎得到了像我期望的用户标签。我不确定我是否理解这个问题。您是否试图从'Tags'中获取每个用户的名字? – ArneHugo

+0

是的,我打算在标签 – user1322692