检查Firestore中是否存在用户
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检查Firestore中是否存在用户相关的知识,希望对你有一定的参考价值。
我想在Cloud Firestore中创建一个用户数据库,其中电子邮件是每个用户的唯一ID。用户应该在collection
,每个用户都是document
。
这是我检查用户是否存在于登录活动中的方式:
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
显示document
的字符串值为:COM.GOOGLE.FIREBASE.FIRESTORE.DOCUMENTSNAPSHOT@8ED6B96
。
这是正确的方法吗?我该怎么办才能修复它?
答案
这个Task
的结果是DocumentSnapshot
。是否可以通过exists
方法获得基础文档是否实际存在。
如果文档存在,您可以调用getData
来获取它的内容。
另一答案
任务结果有一个名为AdditionalUserInfo的字段,你可以在这里找到isNewUser。如果用户已经存在,它将返回false。
if (task.result?.additionalUserInfo!!.isNewUser){
addNewUser()
} else {
updateUser()
}
以上是关于检查Firestore中是否存在用户的主要内容,如果未能解决你的问题,请参考以下文章
如何检查 Flutter Firestore 中是不是存在用户文档?
安卓 | Firestore 规则 |检查用户名和电话是不是已经存在