颤抖-如果不存在,则添加到Firestore集合中,否则更新

时间:2019-11-16 08:36:16

标签: firebase flutter google-cloud-firestore

在扑朔迷离中,我正在使用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;

2 个答案:

答案 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);

}

我希望它将对您有帮助