Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问firebase db子对象元素?_Javascript_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 如何访问firebase db子对象元素?

Javascript 如何访问firebase db子对象元素?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我的firebase数据库结构如下所示 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"

我的firebase数据库结构如下所示

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"
Tag-Key1和用户密钥由firebase通过push()生成。访问内容的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; });
上述代码的输出是

如何访问该名称-值对??firebase密钥有问题吗?
没有得到,我错了。感谢您的输入。

因为标签是每个用户的子属性,所以您必须从每个用户对象中读取它

如果您希望所有用户的所有
标签
,假设在创建用户后每个用户的
标签
未更新,则可以执行以下操作:

tagsPerUserId={};
firebase.datatabs().ref('users')。on('child_added',函数(snap){
tagsPerUserId[snap.key]=snap.value().Tags;
//TODO:通知视图tagerPerUserId已更新,需要重新呈现
log(`tagsforuserid${snap.key}:${snap.value().Tags}`);
});

这样,在创建新用户时,您也将获得新用户的
标签
,但不会获得现有用户的
标签
的更新。

您的用例是什么?用户的
标记是否在创建用户后更新过?你的应用程序中是否有一个可以添加新值并触发重新渲染的商店?
标记
不是
用户的孩子
@ArneHugo,是的标记经常用新的名称-值对进行更新。@torazaburo,谢谢你的澄清,我错过了这一点。但我想访问“name:value”对。如何?在我的问题中添加了新的代码和输出格式。请检查你的例子,你似乎得到了一个用户的标签,就像我所期望的。我不确定我是否理解这个问题。您是否正在尝试从
标记内部获取每个用户的名称?是的,我正在尝试获取标记下每个用户的名称。您是否只需要一个名称数组?然后,您可以执行
Object.values(Tags)
(如果您确实使用它,您应该填充它以确保它在所有浏览器中都能工作。)