如何获取Firebase实时数据库usernames节点的子节点名称列表?
获取Firebase实时数据库子节点名称列表的方法
你当前代码里snapshot.val()返回的是包含子节点键值对的对象,直接alert对象自然会显示[object Object]。要拿到仅包含子节点名称的列表,有两种简单方法:
方法1:使用Object.keys()
直接提取返回对象的键名数组,代码修改如下:
const starCountRef = ref(database, 'usernames/'); onValue(starCountRef, (snapshot) => { const data = snapshot.val(); if (data) { // 先判断节点是否存在,避免空值报错 const usernameList = Object.keys(data); alert(usernameList); // 此时会显示类似["steve", ...]的数组 } else { alert("没有找到用户名节点"); } });
方法2:使用Firebase快照的forEach()遍历
如果需要更严谨地处理节点(比如节点有未公开的元数据时),可以遍历快照的子节点来收集名称:
const starCountRef = ref(database, 'usernames/'); onValue(starCountRef, (snapshot) => { const usernameList = []; snapshot.forEach(childSnapshot => { usernameList.push(childSnapshot.key); // 每个子节点的key就是你要的名称 }); alert(usernameList); });
两种方法都能得到你想要的[steve, ...]格式的子节点名称列表,不会包含子节点的子项。
内容的提问来源于stack exchange,提问作者Teabelly
相关产品推荐
相关产品推荐

