Firebase 如何通过与Flatter cloud firestore插件中的日期进行比较来获取记录?
我正在使用firebase cloud firestore来存储我的所有文档。我的文档有一个格式如下的startDateTime字段 我想获取startDateTime大于或等于当前日期的所有记录。这是我的颤振代码来做这件事Firebase 如何通过与Flatter cloud firestore插件中的日期进行比较来获取记录?,firebase,dart,google-cloud-firestore,flutter,Firebase,Dart,Google Cloud Firestore,Flutter,我正在使用firebase cloud firestore来存储我的所有文档。我的文档有一个格式如下的startDateTime字段 我想获取startDateTime大于或等于当前日期的所有记录。这是我的颤振代码来做这件事 Firestore.instance.collection("trips") .where("trip.createdByUID", isEqualTo: this.userDetails['id']) .where("trip.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()}" ));
})
但这是行不通的。无法理解如何使用比使用或等于更好,这样它才能正常工作
需要一些指导。仅通过此查询
.where(“trip.startDateTime”,大于或等于:new DateTime.now())
由于firebase自动将dartDateTime
对象转换为Timestamp firebase对象。保存对象时也需要执行同样的操作
您可以在右侧看到对象类型是否为timestamp
如果这不起作用,您可以在创建时以数字格式保存另一个对象。那么比较起来就容易了。您可以按如下方式获取数字日期时间:
new DateTime.now().millissecondssinceepoch
我在iOS上使用了它。请检查下面的代码
DateTime _now = DateTime.now();
return StreamBuilder<QuerySnapshot>(
stream: _store
.collection('rides')
.orderBy('rideDate')
.orderBy('rideType')
.where('rideDate', isGreaterThan: _now)
.snapshots(),
DateTime\u now=DateTime.now();
返回流生成器(
流:\ u存储
.collection('rides')
.orderBy('rideDate'))
.orderBy('rideType'))
.where('rideDate',大于:_now)
.snapshots(),
哦,天哪,好像我的大脑不在我身边。事实上,我尝试了新的日期时间。现在()
但这也不起作用&愚蠢的问题是……我的firebase中没有任何文档的startDateTime
时间高于今天的日期。无论如何,谢谢你的回复。它在android上有效,但在ios上无效。请帮帮忙。@tree你在ios上得到了什么?