检查用户是否存在于 Firestore 中
Check if user exists in Firestore
我想在 Cloud Firestore 中创建一个用户数据库,将电子邮件作为每个用户的唯一 ID。用户应该在一个collection
,每个用户是一个document
。
这是我检查用户是否存在于登录中的方法activity:
FirebaseFirestore db = FirebaseFirestore.getInstance();
final DocumentReference userRef = db.collection("users").document(email);
userRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
Toast.makeText(LoginActivity.this, task.getResult().toString(),
Toast.LENGTH_SHORT).show();
if (document != null) {
//The user exists...
}
else {
//The user doesn't exist...
}
}
}
else
connectionErrorActivity();
}
});
数据库为空,如您所见:
我的问题是,document
永远不会为空,即使数据库是空的。 toast
显示 [= 的字符串值12=] 是:COM.GOOGLE.FIREBASE.FIRESTORE.DOCUMENTSNAPSHOT@8ED6B96
.
这是执行此操作的正确方法吗?我能做些什么来修复它?
Task
的结果是 DocumentSnapshot
。通过 exists
方法可以获得基础文档是否实际存在。
如果文档确实存在,您可以调用 getData
来获取它的内容。
任务结果有一个名为AdditionalUserInfo 的字段,您可以在这里找到isNewUser。如果用户已经存在,它将 return false。
if (task.result?.additionalUserInfo!!.isNewUser){
addNewUser()
} else {
updateUser()
}
我想在 Cloud Firestore 中创建一个用户数据库,将电子邮件作为每个用户的唯一 ID。用户应该在一个collection
,每个用户是一个document
。
这是我检查用户是否存在于登录中的方法activity:
FirebaseFirestore db = FirebaseFirestore.getInstance();
final DocumentReference userRef = db.collection("users").document(email);
userRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
Toast.makeText(LoginActivity.this, task.getResult().toString(),
Toast.LENGTH_SHORT).show();
if (document != null) {
//The user exists...
}
else {
//The user doesn't exist...
}
}
}
else
connectionErrorActivity();
}
});
数据库为空,如您所见:
我的问题是,document
永远不会为空,即使数据库是空的。 toast
显示 [= 的字符串值12=] 是:COM.GOOGLE.FIREBASE.FIRESTORE.DOCUMENTSNAPSHOT@8ED6B96
.
这是执行此操作的正确方法吗?我能做些什么来修复它?
Task
的结果是 DocumentSnapshot
。通过 exists
方法可以获得基础文档是否实际存在。
如果文档确实存在,您可以调用 getData
来获取它的内容。
任务结果有一个名为AdditionalUserInfo 的字段,您可以在这里找到isNewUser。如果用户已经存在,它将 return false。
if (task.result?.additionalUserInfo!!.isNewUser){
addNewUser()
} else {
updateUser()
}