【发布时间】:2018-07-26 11:52:58
【问题描述】:
如果 firebase 数据库不存在,我想用 toast 显示错误消息。
示例:当我删除数据库、删除 firebase 项目或没有数据库时,应用程序将无法连接到 firebase 数据库。
因此,当这一切发生时,应用程序应显示错误消息“数据库不存在”或“未连接到数据库”。
【问题讨论】:
标签: android firebase firebase-realtime-database
如果 firebase 数据库不存在,我想用 toast 显示错误消息。
示例:当我删除数据库、删除 firebase 项目或没有数据库时,应用程序将无法连接到 firebase 数据库。
因此,当这一切发生时,应用程序应显示错误消息“数据库不存在”或“未连接到数据库”。
【问题讨论】:
标签: android firebase firebase-realtime-database
因为您在问题中没有提到您是在寻找 Firebase 实时数据库还是 Cloud Firestore,所以我将为您提供两者的答案。因此,对于 Firebase 实时数据库,/.info/connected 有一个特殊位置,每次 Firebase 实时数据库客户端的连接状态更改时都会更新该位置。以下是官方文档中的示例:
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
System.out.println("connected");
} else {
System.out.println("not connected");
}
}
@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});
这样您就可以知道客户端是否连接到服务器。
对于 Cloud Firestore,当您处于离线状态并使用 get() 调用时,结果将来自您的应用正在使用的 Cloud Firestore 数据的缓存副本。
要检查数据是来自缓存还是来自 Firestore 服务器,您可以使用以下代码行:
String source = querySnapshot.getMetadata().isFromCache() ? "Local Cache" : "Firebase Server";
【讨论】:
引用数据库的主节点并使用 exists() 检查该引用是否存在
DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!dataSnapshot.exists())
Log.e("No database","Connection Lost");
}
@Override
public void onCancelled(DatabaseError databaseError) {
System.out.println("The read failed: " + databaseError.getCode());
}
});
如果不存在,则不会在该数据库中检查任何内容
【讨论】: