在扑朔迷离中,我正在使用Firestore存储我登录的用户。
我希望用户第一次登录时将其信息添加到集合中。
如果他注销然后登录,我想更新他在文档集中的文档。
要检查是否存在与用户相对应的文档,我想通过其“ id”(即文档中的字段)进行检查,而不是通过文档标签进行检查,因为我是从firebase api获取“ id”的。
这是正常工作的添加
_firestore.collection('profiles').add({
'firebase_id': profile['user_id'],
'first_name': profile['first_name'],
'last_name': profile['last_name'],
'login_date': profile['login_date']
});
我尝试使用以下方法检查用户是否存在,但始终返回false
bool isEmpty = await _firestore
.collection('profiles')
.where('firebase_id', isEqualTo: profile['user_id'])
.snapshots()
.first
.isEmpty;
答案 0 :(得分:1)
在将用户保存在Firestore中时,请确保documentID等于userID。
Firestore.instance.collection('profiles').document( profile['user_id']).setData({
'firebase_id': profile['user_id'],
'first_name': profile['first_name'],
'last_name': profile['last_name'],
'login_date': profile['login_date']
});
然后检查是否存在。
bool userExists=(await Firestore.instance.collection('profiles').document('userid').get()).exists;
答案 1 :(得分:1)
下面是一个示例,该示例将检查用户是否存在以及是否存在,它将通过简单地使用merge覆盖以前的数据。
DocumentReference ref = _db.collection('users').document(user.uid);
return ref.setData({
'uid': user.uid,
'email': user.email,
'photoURL': user.photoUrl,
'displayName': user.displayName,
'lastSeen': DateTime.now()
}, merge: true);
}
我希望它将对您有帮助