首页 > 解决方案 > 在 Android 上引用 Firebase 数据库的正确方法是什么?

问题描述

我正在使用 Firebase 实时数据库进行我的第一个项目。我正在关注关于如何实例化和写入数据库的 Firebase 文档(这里没问题)。但是,当我想从 Firebase 数据库中读取数据时,我得到一个对我的数据库的空引用。我正在尝试更改路径,添加根元素,更改为子元素。没有任何效果。我可以给它写信。我对数据库的权限设置为用于测试。

这是数据库:

user-registration-app-f3fa2
 users
  jjohnson
     email:"jjohnson@parks.org"
     fullName: "James Johnson"
     username: "jjohnson"

这是我从数据库中读取的位置:

FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference mDatabase = database.getReference("users");

        // Read from the database
        mDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String value = dataSnapshot.child("jvazquez").getValue(String.class);
                Log.d(TAG, "Value is: " + value);
            }

            @Override
            public void onCancelled(DatabaseError error) {
                // Failed to read value
                Log.w(TAG, "Failed to read value.", error.toException());
            }
        });

标签: androidfirebasefirebase-realtime-database

解决方案


例如,要获取fullName属性的值,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference fullNameRef = rootRef.child("users").child("jjohnson").child("fullName");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        String fullName = dataSnapshot.getValue(String.class);
        Log.d(TAG, fullName);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
fullNameRef.addListenerForSingleValueEvent(valueEventListener);

logcat 中的输出将是:

James Johnson

推荐阅读