java - 如何从java中的firebase获取孩子的孩子的价值
问题描述
从这里我想从邮件mailID
和主题中获取邮件的值,从邮件文本中获取标题。我能够访问单个子项的值,但是当它显示为空时,尝试获取所有三个。
以下代码适用于单个孩子:
DatabaseReference databaseRef = database.getReference("/");
databaseRef.addValueEventListener(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
ArrayList<String> email = new ArrayList();
for (DataSnapshot sd: dataSnapshot.getChildren()) {
String emailStr = sd.child("email").getValue(String.class);
email.add(emailStr);
System.out.println(email);
}
latch.countDown();
}
上面的代码给了我数组,其中包含我想要获取电子邮件、标题和主题的值的所有电子邮件。
解决方案
假设该new
节点是您的 Firebase 根的直接子节点,为了实现您在评论中解释的内容,请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference newRef = rootRef.child("new");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.child("mailID").getChildren()) {
String email = ds.child("email").getValue(String.class);
String name = ds.child("name").getValue(String.class);
Log.d("TAG", email + " / " + name);
}
for(DataSnapshot ds : dataSnapshot.child("mailText").getChildren()) {
String title = ds.child("title").getValue(String.class);
String subject = ds.child("subject").getValue(String.class);
Log.d("TAG", title + " / " + subject);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
newRef.addListenerForSingleValueEvent(valueEventListener);
如您所见,您需要在树层次结构中附加一个更高一级的侦听器,并使用getChildren()
方法两次循环遍历子级。
推荐阅读
- javascript - 常规滚动后如何隐藏div?
- mysql - SELECT DISTINCT ON 简单表唯一值
- angular - Angular 7 Routing 给了我一个 ; 在参数中
- javascript - 使用 Rails 中的活动存储直接上传 - input.dataset.directUploadUrl "undefined"
- git - 基于单个存储库中的分支将 ElasticBeanstalk 部署到不同账户
- javascript - JS 发送带有文本的 API 消息
- ubuntu - 将 kafka 路径添加到 /etc/environment 文件,以便全局访问 kafka。将 kafka 路径添加到 bin 文件夹
- mysql - mysql -v ERROR 1045 (28000): Access denied for user root'@'localhost' (使用密码: NO)
- python-3.x - Python拼接数据
- node.js - 我正在开发一个 mern 应用程序,但遇到错误 TypeError: Cannot read property 'username' of undefined on chrome console