如何在Firebase中检索字段的值?

时间:2016-10-13 07:56:32

标签: android firebase firebase-realtime-database

enter image description here

说我有Firebase数据库。我想使用Firebase自动生成密钥获取联系对象和每个字段。怎么做?

我想象的是:

Query ref = FirebaseDatabase.getInstance().
    getReference("contacts").orderByKey().equalTo("-KTwyKpIifsYAZiZd861");

也许可以这样使用它:(顺便说一句,下面不是实际代码,因为getValue()不存在。它只是代表我正在尝试做的事情。) < / p>

String name = ref.getValue("name");
String city = ref.getValue("city);
// and so on.

那么,如何在Firebase中检索各个字段的值?

1 个答案:

答案 0 :(得分:2)

您可以创建Contact课程:

@IgnoreExtraProperties
public class Contact {
    public String address;
    public String city;
    public String code_name;
    public String name;

    public Contact() {

    }
}

并使用ValueEventListener获取值:

mDatabase = FirebaseDatabase.getInstance().getReference();

// ...

mDatabase.child("contacts").child("-KTwyKpIifsYAZiZd861").addListenerForSingleValueEvent(
        new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    Contact contact = dataSnapshot.getValue(Contact.class);
                    String name = contact.name; // "John Doe"
                    String city = contact.city; // "Texas"
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
        });

见官方docs

根据Frank van Puffelen的评论,提问者写的更多细节:

如果有人将来读到这篇文章,并且因为为什么从Firebase检索数据需要一个事件(比如我)而感到困惑,那就是因为当我们从互联网上加载某些内容时,我们无法始终期待它立即加载。这就是为什么我们需要异步处理它,并在此Firebase案例中,使用上面回答的事件。

例如,在附加ValueEventListener()以检索数据之前,您可以向用户显示加载动画,在调用onDataChange()onCancelled()时禁用该动画。这样,您的用户就会知道正在加载数据以及何时完成数据。