检索子值 -firebase-

Posted

技术标签:

【中文标题】检索子值 -firebase-【英文标题】:Retrieving child value -firebase- 【发布时间】:2016-10-27 07:56:49 【问题描述】:
System.out.println(ref.child("mostafa_farahat22@yahoo.com").child("_email"));

*我正在尝试获取 child 的值,但我一直获取该值的 URL 当我尝试使用此代码时,如何获取此 URL 的值,但它让我得到了我想要获取 _email 值的 URL。

【问题讨论】:

【参考方案1】:

您从错误的角度看待这个概念。 在使用ref.child("mostafa_farahat22@yahoo.com").child("_email") 时,您只是简单地指向数据库中的特定位置,仅此而已。 如果您想检索该特定位置的数据,请考虑以下两种方式。

首先,如果您只想检索一次数据,您可以执行以下操作:

 DatabaseReference ref = FirebaseDatabase.getInstance().getReference();
 DatabaseReference mostafa = ref.child("Users").child("mostafa_farahat22@yahoo.com").child("_email");

 mostafa.addListenerForSingleValueEvent(new ValueEventListener() 
 @Override
 public void onDataChange(DataSnapshot dataSnapshot) 
    String email = dataSnapshot.getValue(String.class);
    //do what you want with the email 
 

 @Override
 public void onCancelled(DatabaseError databaseError) 

 
 );

或者您可能想实时检索该值并在数据库值更改的同时使用它,所有这些都在同一时间,每当值更改时,您就使用这个:

mostafa.addValueEventListener(new ValueEventListener() 
@Override
public void onDataChange(DataSnapshot dataSnapshot) 
    String email = dataSnapshot.getValue(String.class);

    display.setText(email);


@Override
public void onCancelled(DatabaseError databaseError) 


);

注意这两种方法的区别。第一个仅用于一次检索,第二个用于在值更改时检索数据。

请记住,我发布的代码只是模板,可能需​​要使用它们。

【讨论】:

addValueEventListener 设置后是否会被触发一次? @SreekanthKarumanaghat 我不这么认为。当从 Firebase 数据库向其推送数据时应该触发它。 @Ramtin 不,我检查过,它在开始时被触发一次。【参考方案2】:

使用ref.child("mostafa_farahat22@yahoo.com").child("_email"),您只是设置对对象的引用。看看java firebase documentation to retrieve data。

要获取数据,您需要设置一个侦听器以供参考

ref.child("mostafa_farahat22@yahoo.com").child("_email").addListenerForSingleValueEvent(new ValueEventListener() 
    @Override
    public void onDataChange(DataSnapshot snapshot) 
        // data available in snapshot.value()
    
    @Override
    public void onCancelled(FirebaseError firebaseError) 
    
);

【讨论】:

以上是关于检索子值 -firebase-的主要内容,如果未能解决你的问题,请参考以下文章

使用 DOM 解析器根据父节点属性检索子节点值

MongodB 通过属性名称检索子文档

如何在firebase中检索子(自动增量)名称

NSFetchedResultsController, NSPredicate 以对多关系检索子对象

使用自动布局检索子视图的正确位置

用于检索子进程输出的python代码(linux ps命令)