Как получить записи, сравнив их с датой в пламени облака пламени? - PullRequest
0 голосов
/ 03 июня 2018

Работа над приложением флаттера, в котором я использую облачный пожарный магазин Firebase для хранения всех своих документов.В моем документе есть поле startDateTime , имеющее следующий формат: ...

enter image description here

Я хочу получить все записи, чей startDateTimeбольше или равно текущей дате.Вот мой код, чтобы сделать это ...

Firestore.instance.collection("trips")
    .where("trip.createdByUID", isEqualTo: this.userDetails['id'])
    .where("trip.startDateTime", isGreaterThanOrEqualTo: new DateTime.now().toString() )
    .getDocuments().then((string) {
        print('Firestore response111: , ${string.documents.length}');

        string.documents.forEach((doc) => print("Firestore response222: ${doc.data.toString()}" ));
    })

Но это не работает.Не могу понять, как использовать isGreaterThanOrEqualTo, чтобы он работал.

Нужно руководство.

Ответы [ 2 ]

0 голосов
/ 06 июля 2019

Я получил его на iOS.Пожалуйста, проверьте код ниже.

DateTime _now = DateTime.now();

return StreamBuilder<QuerySnapshot>(
  stream: _store
      .collection('rides')
      .orderBy('rideDate')
      .orderBy('rideType')
      .where('rideDate', isGreaterThan: _now)
      .snapshots(),
0 голосов
/ 03 июня 2018

Передайте только этот запрос

.where("trip.startDateTime", isGreaterThanOrEqualTo: new DateTime.now())

Поскольку firebase автоматически преобразует объект dart DateTime в объект Timestamp Firebase.Вы также должны сделать то же самое при сохранении объекта.

enter image description here

Справа можно увидеть, если тип объекта - метка времени.

Если это не сработает, вы можете сохранить другой объект для создания в числовом формате.Тогда это легко сравнить.Вы можете получить числовой dateTime, как это:

new DateTime.now().millisecondsSinceEpoch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...