【发布时间】:2019-05-23 22:25:06
【问题描述】:
我真的是 Firebase 的新手。 我正在制作一个使用 firestore 作为数据库的 Android 应用程序。我的问题是当我尝试检查某个数据是否存在时。它总是说没有。
这是发生这种情况的方法。
private void usernameInDatabase(final String username){
if (registration != null)
registration.remove();
registration = utilizadores.addSnapshotListener(new EventListener<DocumentSnapshot>() {
@Override public void onEvent(@Nullable DocumentSnapshot snapshot,
@Nullable FirebaseFirestoreException e) {
if (e != null) {
Log.w("Utilizadores", "Listen failed.", e);
return;
}
if (snapshot != null && snapshot.exists()) {
Log.d("Utilizadores", snapshot.getData().toString());
Log.d("Utilizadores", username);
if (snapshot.get(username) == null) {
loginFormState.setValue(new LoginFormState(R.string.utilizadorNaoBaseDados, null));
utilizadorNaBaseDados = false;
Log.d("Utilizadores", "Not Database :(");
} else {
utilizadorNaBaseDados = true;
Log.d("Utilizadores", "base de dados ;D");
}
} else {
Log.d("Utilizadores", "Current data: null");
}
}
});
}
如您所见,我在此处检查可以从 firestore 检索的数据:
Log.d("Utilizadores", snapshot.getData().toString());
Log.d("Utilizadores", username);
这是我在 logcat 中得到的:
{daniel@gmail.com={dataNasc=Timestamp(seconds=862182000, nanoseconds=0), mail=daniel@gmail.com, pass=, nome=Daniel Marco, id=danMar125},ester@gmail.com ={dataNasc=Timestamp(seconds=902876400, nanoseconds=0), mail=ester@gmail.com, pass=, nome=Ester Mendes, id=est124}, ola@g.co=hgjk, marcio@gmail.com= {dataNasc=Timestamp(seconds=680914800, nanoseconds=0), mail=marcio@gmail.com, pass=, nome=Márcio Marques, id=marMar123}, marco@gmail.com={dataNasc=Timestamp(seconds=923180400,纳秒=0), 邮件=marco@gmail.com, pass=, 名称=Marco António, id=marAnt545}, maria@gmail.com={dataNasc=时间戳(秒=877561200, 纳秒=0), 邮件=maria@ gmail.com, pass=, nome=Maria Antonieta, id=marAnt999}}
daniel@gmail.com
所以,我知道我正在搜索的用户名在数据库中,并且我知道正在从数据库中检索数据,但它一直表现得好像不是。
有人可以帮帮我吗?
编辑
这是我的数据库结构。
这就是我定义 utilizadores 的方式。
DocumentReference utilizadores = db.collection("Domum").document("Utilizador");
【问题讨论】:
-
请仅使用
android-studio标签来回答有关 Android Studio IDE 本身的问题。对于一般的 Android 编程问题,请使用android标签。 -
@FrankvanPuffelen 谢谢,下次我会更加小心。
-
请将您的数据库结构添加为屏幕截图,并向我们展示您的
utilizadores是如何定义的。也请回复@AlexMamo -
@AlexMamo 我更新了我的问题。如果有什么遗漏,请告诉我。
标签: java android firebase google-cloud-firestore