在flutter应用程序上工作,我正在使用firebase云firestore来存储我的所有文档。我的文档有一个 startDateTime 字段,格式如下......
我想获取其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()}" ));
})
但这不起作用。无法理解如何使用isGreaterThanOrEqualTo
以便它可以正常工作。
需要一些指导。
答案 0 :(得分:5)
只传递此查询
.where("trip.startDateTime", isGreaterThanOrEqualTo: new DateTime.now())
由于firebase会自动将dart DateTime
对象转换为Timestamp Firebase对象。保存对象时也需要执行相同的操作。
如果对象类型是时间戳,您可以在右侧看到。
如果这不起作用,您可以用数字格式在创建中保存另一个对象。然后很容易比较。您可以像这样获取数字日期时间:
new DateTime.now().millisecondsSinceEpoch
答案 1 :(得分:0)
我在iOS上正常工作。请检查下面的代码。
DateTime _now = DateTime.now();
return StreamBuilder<QuerySnapshot>(
stream: _store
.collection('rides')
.orderBy('rideDate')
.orderBy('rideType')
.where('rideDate', isGreaterThan: _now)
.snapshots(),
答案 2 :(得分:0)
您可以使用 DateTime()
按天或小时进行比较:
final response = await FirebaseFirestore.instance
.collection('meetings')
.where(
'date',
isGreaterThanOrEqualTo: DateTime(selectedDay.year, selectedDay.month, selectedDay.day)
)
.get();