我有带日期对象的文档。
初始化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存储为时间戳。
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"
Cloud Firestore查询是不可变的,这意味着您无法更改现有查询的属性。如果通过调用whereLessThan()方法更改值,它将成为一个新查询。因此,要解决此问题,请链接所有方法调用并将其存储在这样的新Query对象中:
whereLessThan()
Query
Query query = db.collection(viewType.collectionName()) .whereLessThan("endDate", new Date()); .orderBy(viewType.sortProperty()).limit(PAGE_SIZE); return query;