Запрос даты FireStore не работает должным образом - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть документ с датой.

Код для инициации Firestore:

 FirebaseFirestore fireStore = FirebaseFirestore.getInstance();
        FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
                .setTimestampsInSnapshotsEnabled(true)
                .build();
        fireStore.setFirestoreSettings(settings);
        firestore = fireStore;

Код для запроса:

FirebaseFirestore db = FireStoreUtils.getInstance();
Query query= db.collection(viewType.collectionName());
        query.whereLessThan("endDate", new Date()); 
        return query.orderBy(viewType.sortProperty()).limit(PAGE_SIZE);

Я всегда получаю всезаписи и выглядит как предложение where не применяется.В консоли Firebase я вижу, что endDate хранится как метка времени.

Документ из консоли Firebase:

createdDate: null (null)
description: "desc" (string)
endDate: February 3, 2019 at 11:18:58 PM UTC-8 (timestamp)
id: "-7475596197450085332" (string)
title: "title" 

1 Ответ

0 голосов
/ 04 февраля 2019

Запросы Cloud Firestore являются неизменяемыми, что означает, что вы не можете изменить свойства существующего запроса.Если вы измените значение, вызвав метод whereLessThan(), он станет новым запросом.Чтобы решить эту проблему, объедините все вызовы методов в цепочку и сохраните их в новом объекте Query, например:

Query query = db.collection(viewType.collectionName())
    .whereLessThan("endDate", new Date());
    .orderBy(viewType.sortProperty()).limit(PAGE_SIZE);
    return query;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...