#firebase #dart #flutter #google-cloud-firestore
#firebase #dart #flutter #google-облако-firestore
Вопрос:
Я сохраняю некоторые записи в Firestore со свойством timestamp, а затем запрашиваю эти записи, упорядоченные по временной метке. Я пытаюсь создать функцию «loadMore», которая затем работает, когда пользователь прокручивает страницу вниз и загружает больше сообщений.
Я сохраняю записи таким образом:
Firestore.instance
.collection('posts')
.add(<String, dynamic> {
'content': 'content,
'likes': 0,
'comments': 0,
'timestamp': DateTime.now(),
})
И попытка выполнить запрос таким образом:
Firestore.instance
.collection('posts')
.orderBy('timestamp', descending: true)
.startAfter(
[]..add(posts.last.timestamp)
)
..limit(5)
Но он продолжает игнорировать «startAfter» и возвращает мне список, начинающийся с первого элемента коллекции, а не со следующих.
Хотелось бы получить помощь в использовании этого типа запросов 🙂
Ответ №1:
Преобразуйте DateTime в дату-время Unix
'timestamp': DateTime.now().toUtc().millisecondsSinceEpoch
Комментарии:
1. Это сработало. Я бы предпочел использовать формат DateTime для более удобного просмотра данных в базе данных, но пока я могу смириться с этим. Для извлечения данных я использую:
DateTime.fromMillisecondsSinceEpoch(doc.data['timestamp'], isUtc: true),
2. Firebase и Firestore используют формат даты и времени unix (миллисекунды с момента epoch), клиент Firebase не может знать, когда конвертировать, поэтому вам придется позаботиться о себе. Ваш код для извлечения выглядит хорошо.