【发布时间】:2020-07-15 21:12:13
【问题描述】:
我正在为学校做一个项目 - android 应用程序,它在检查 Firestore 的不同数据库中是否有相应的卡号和电话号码后将用户注册到实时数据库。目前它只验证第一个文档,但如果我在其他文档中搜索它们,它不会找到这些字段。
这是我使用的方法:
public void checkIfCardExists() {
Query query = cardInfo.whereEqualTo("CardNo", cardNumber)
.whereEqualTo("Phone", userPhone);
query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
boolean documentExists;
if (task.isSuccessful()) {
Log.d("QueryResult", "Is query result empty: " + task.getResult().isEmpty());
documentExists = !task.getResult().isEmpty();
}else {
Log.e("QueryResult", "Error getting documents.", task.getException());
documentExists = false;
}
if(documentExists) {
Log.d("QueryResult", "The document exists");
Toast.makeText(com.example.transportticket.RegistrationLeap.this, "Card number found",
Toast.LENGTH_SHORT).show();
userLeap = new UserLeap(userEmail, userPass, userName, userSurname, cardNumber, userPhone);
registerUserLeap(userEmail, userPass);
startActivity(new Intent(RegistrationLeap.this, Empty.class));
}else{
Log.d("QueryResult", "The document doesn't exist or there was an error retrieving it");
Toast.makeText(com.example.transportticket.RegistrationLeap.this, "Card number not found",
Toast.LENGTH_SHORT).show();
startActivity(new Intent(RegistrationLeap.this, Empty.class));
}
}
});
}
这就是我的 Firestore 数据库的样子 Firestore database
【问题讨论】:
-
“如果我在其他文档中搜索这些字段,将找不到这些字段”是什么意思?这段代码中究竟有什么不符合您的预期?
-
我的意思是,如果我输入位于第一个文档中的卡号和电话号码,它会找到它并继续输入代码。但如果它们位于其他地方,它将找不到,m 并且不会注册用户
-
我的意思是,如果我输入位于第一个文档中的卡号和电话号码,它会找到并继续输入代码。 这是正确的行为。 “位于其他地方”是什么意思?
-
我又添加了一张照片。将找到顶部文档,但不会找到其余文档。如何搜索所有文档?
-
其他文档中的值与第一个相同吗?
标签: android google-cloud-firestore