使用颤振中的 2 where 子句查询 Firestore

时间:2021-06-30 09:01:35

标签: firebase flutter google-cloud-firestore

  • 我的 eventClick 表中有两个属性 eventIDuserID 所以我想要做的是如果 eventIDuserID 通常存在然后显示You have already clicked 如果不是,则输入点击。我想过使用两个子句并将其合并,但这只会导致插入值。
  • 我正在尝试使用以下代码
final checkSnapshot = FirebaseFirestore.instance
  .collection('eventClick')
  .where('eventID', isEqualTo: eventID)
  .where('userID', isEqualTo: userID)
  .snapshots();
  • 我希望工作像这样
  if (checkSnapshot.exists) {
      print('already exists');
    } else {
      FirebaseFirestore.instance.collection('eventClick').add({
        'eventID': eventID,
        'eventName': eventName,
        'eventImageUrl': eventImageUrl,
        'userID': userID
      });
    }

1 个答案:

答案 0 :(得分:1)

您可以尝试使用 .get() 吗?那应该返回一个 QuerySnapshot ,它有一个 'size' 属性。如果为 0,则表示不存在此类文档。

FirebaseFirestore.instance
  .collection('eventClick')
  .where('eventID', isEqualTo: eventID)
  .where('userID', isEqualTo: userID)
  .get()
  .then((checkSnapshot) {
    print(checkSnapshot.docs[0]);
    if (checkSnapshot.size > 0) {
      print("Already Exists");
    } else {
      //add the document
    }
  });