2 回答
TA贡献1906条经验 获得超10个赞
Cloud Firestore 查询是不可变的,这意味着您无法更改现有查询的属性。如果您通过调用whereLessThan()方法更改值,它将成为一个新的查询。因此,为了解决这个问题,请将所有方法调用链接起来,并将它们存储在一个新Query对象中,如下所示:
Query query = db.collection(viewType.collectionName())
.whereLessThan("endDate", new Date());
.orderBy(viewType.sortProperty()).limit(PAGE_SIZE);
return query;
TA贡献1827条经验 获得超4个赞
我遇到了同样的问题,我比较和过滤日期的解决方案是这样的:
请注意,firebase 存储Date不是Timestamp创建一个Date来比较,而是创建一个Timestamp。
Timestamp记得从 Firebase导入:
import com.google.firebase.Timestamp
查询代码:
val currentDate = Timestamp.now() // Firebase Date as Timestamp
FirebaseFirestore db = FireStoreUtils.getInstance();
Query query= db.collection(viewType.collectionName());
query.whereLessThan("endDate", currentDate.toDate());
return query.orderBy(viewType.sortProperty()).limit(PAGE_SIZE);
我正在使用 firebase 版本:
implementation "com.google.firebase:firebase-firestore-ktx:21.3.1"
我希望它有帮助!
添加回答
举报