use*_*796 2 java android firebase google-cloud-firestore
我有一个有日期对象的文档。
初始化 Firestore 的代码:
FirebaseFirestore fireStore = FirebaseFirestore.getInstance();
FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
.setTimestampsInSnapshotsEnabled(true)
.build();
fireStore.setFirestoreSettings(settings);
firestore = fireStore;
Run Code Online (Sandbox Code Playgroud)
查询代码:
FirebaseFirestore db = FireStoreUtils.getInstance();
Query query= db.collection(viewType.collectionName());
query.whereLessThan("endDate", new Date());
return query.orderBy(viewType.sortProperty()).limit(PAGE_SIZE);
Run Code Online (Sandbox Code Playgroud)
我总是获取所有记录,并且看起来 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"
Run Code Online (Sandbox Code Playgroud)
Cloud Firestore 查询是不可变的,这意味着您无法更改现有查询的属性。如果通过调用whereLessThan()方法更改该值,它将成为一个新的查询。因此,要解决此问题,请链接所有方法调用并将它们存储在一个新Query对象中,如下所示:
Query query = db.collection(viewType.collectionName())
.whereLessThan("endDate", new Date())
.orderBy(viewType.sortProperty()).limit(PAGE_SIZE);
return query;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1819 次 |
| 最近记录: |