# #firebase #flutter #google-cloud-firestore
Вопрос:
- У меня есть два атрибута в моей
eventClick
таблицеeventID
, иuserID
поэтому я пытаюсь сделать следующее: еслиeventID
иuserID
обычно существует, то покажите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:
Можете ли вы попробовать использовать .get() ? Это должно вернуть QuerySnapshot, который имеет свойство «размер». Если 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
}
});
Комментарии:
1. Он добавляется в таблицу, если он существует, запрос работает не так, как должен быть.
2. @LavSharma Я переместил снимок из блока if, не могли бы вы поделиться скриншотом этого?
3.
QuerySnapshot
У A нетdata()
метода.4. Спасибо, что заметили, что @RenaudTarnec, я пропустил
.docs[0]
.5.
checkSnapshot.size()
в основном возвращает количество записей в моемeventClick
изображении таблицы, показывающем все- Изображение 1 Изображение из firestore — Изображение 2 , изображение 3
Ответ №2:
FirebaseFirestore.instance
.collection('task')
.where('usergroup', isEqualTo: 'software')
.where('userid', isEqualTo: 'ep434334')
.snapshots(),