[英]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.