Javascript 如何访问firebase db子对象元素?
我的firebase数据库结构如下所示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"
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)
(如果您确实使用它,您应该填充它以确保它在所有浏览器中都能工作。)