如何从firebase数据库中获取一个孩子
Posted
技术标签:
【中文标题】如何从firebase数据库中获取一个孩子【英文标题】:How to get a single child from firebase database 【发布时间】:2021-05-28 10:28:05 【问题描述】:我检查了高低,但我看到的只是人们试图让所有孩子都进入列表和东西。我只想从数据库中获取一个孩子。
"Haydn" :
"Users" :
"email" : "user@gmail.com",
"name" : "kofi"
我想从结构中获取名称。
我的代码:
rootNode = FirebaseDatabase.getInstance();
reference = rootNode.getReference().child("Users");
reference.addListenerForSingleValueEvent(
new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot snapshot)
if(snapshot.exists())
String displayName = (String) snapshot.child("Haydn").child("Users").child("name").getValue();
loggedInUserTextView.setText(displayName);
@Override
public void onCancelled(@NonNull DatabaseError error)
【问题讨论】:
1) 您能否在/Users
向我们展示实际的JSON,而不是显示示意图(作为文本,请不要截图)?您可以通过单击Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接来获取此信息。 2)然后你能指出你想在loggedInUserTextView
中显示这个JSON的什么值吗?
用东西更新了它
1) 你的问题中的"Haydn"
是什么意思,在 JSON 中代表什么? 2) 我强烈建议导出数据,而不是输入数据,因为AppName
通常也不属于导出的 JSON 的一部分(尽管它是数据库 URL 的一部分)。如果 JSON 中有敏感数据,则可以更改它。但是不要改变结构,因为没有看到实际的 JSON 就无法帮助您。
@Ashish 对于 Firebase 实时数据库,最好将结构包含为文本而不是图片。这样,如果我们需要在答案中使用它,它可以被复制和粘贴(所以我们不必重新输入 while 内容)。只要按照 Frank 在评论中提到的那样导出和粘贴数据,我们就可以开始了。
@Rabbid76 我现在转贴
【参考方案1】:
您可以这样设置参考:
reference = rootNode.getReference().child("Users");
这意味着 Firebase 会从您的数据库中的 /Users
读取数据。由于您发布的 JSON 的根目录中没有 Users
节点,这意味着您获得的 snapshot
将是空的。
要读取单个节点,就像您在此处尝试做的那样,设置对该节点确切路径的引用:
reference = rootNode.getReference().child("Haydn/Users/name");
如您所见,您可以将整个路径传递给child(...)
中的节点。
有了这个参考,你可以像这样读取值:
reference.addListenerForSingleValueEvent(new ValueEventListener()
@Override
public void onDataChange(@NonNull DataSnapshot snapshot)
if(snapshot.exists())
String displayName = snapshot.getValue(String.class);
loggedInUserTextView.setText(displayName);
@Override
public void onCancelled(@NonNull DatabaseError error)
throw error.toException();
【讨论】:
以上是关于如何从firebase数据库中获取一个孩子的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Firebase android kotlin 获取所有具有特定价值的孩子?
如何从 uid Firebase 数据库中获取电子邮件地址?