繁体   English   中英

基本 Firebase / Java 读/写

[英]Basic Firebase / Java read/write

此刻我觉得自己很愚蠢。 我之前已经完成了很多 Android Studio/Java/Firebase 编码,并且对它非常满意。 一段时间后刚刚回到它,我已将所有内容更新到最新版本,但我无法让我的测试应用程序与数据库对话。

我创建了一个新的 Firebase 项目,下载了 google-services 文件,使用了 Android Studio 助手 - 它告诉我我已连接 - 并使用了文档中的简单读/写“hello world”代码。

代码运行后,我在日志窗口中正确获得了“读取”输出,但在 Firebase 控制台上看不到数据。 如果我然后只运行“读取”代码,我将一无所获,因此“写入”仅在数据库引用在范围内时才有效。

我几乎没有什么可以改变的了,所以对于应该如此简单的事情感到非常沮丧 - 我很可能正在做一些愚蠢的事情。

关于为什么会发生这种情况的任何想法将不胜感激。

Android Studio 3.2.1,Firebase 库 16.0.4,SDK 版本 28,谷歌服务 4.2.0

代码基本上是直接从文档中获取的。

TIA。

    database = FirebaseDatabase.getInstance();
    myRef = database.getReference("Message");

    // Write
    myRef.child("Monday").setValue("Hello, Lovely World!");

    // Read
    ValueEventListener listener;
    listener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            // This method is called once with the initial value and again
            // whenever data at this location is updated.
            String value = dataSnapshot.getValue(String.class);
            String key = dataSnapshot.getKey();

            Log.e(TAG, "Key is : " + key + " Value is: " + value);
        }

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

基本上你做对了。

但请记住FirebaseDatabase.getInstance().getReference()代表数据库的根。

所以你可能想试试myRef.child("sample_key").setValue("sample_value");

这将在您的数据库根目录下创建一个键值对。 您试图为您的数据库设置一个值而不给它一个键,这会导致错误。

仅供参考, myRef.addValueEventListener(listener)表示监听整个数据库。

myRef.child("sample_key").addValueEventListener(listener)表示只监听sample_key的值。

记住当你不再需要它时调用removeEventListener(listener)

https://firebase.google.com/docs/database/admin/save-data

  • 仔细阅读文档,它使用的是DatabaseReference usersRef = ref.child("users"); 将值保存到 child,而不是ref本身。

我有同样的问题。 我不得不切换 Firebase 参考。 我的代码看起来像:

Firebase myRef;

//关于创建方法

myRef = new Firebase("insert url to firebase");

我不知道为什么,但我使用了这个参考,因为没有其他工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM