如何从Firebase获取今天的所有记录

时间:2019-12-19 20:44:15

标签: firebase flutter google-cloud-firestore

我的代码显示了收集的所有记录,如何获取今天的时间戳记录,我从google搜索示例,但我不知道我的代码在哪里使用“ where”条件。

Widget _buildBody(BuildContext context) {
 return StreamBuilder<QuerySnapshot>(
   stream: Firestore.instance.collection('baby').snapshots(),

   builder: (context, snapshot) {
     if (!snapshot.hasData) return LinearProgressIndicator();

     return _buildList(context, snapshot.data.documents);
   },
 );
}

Widget _buildList(BuildContext context, List<DocumentSnapshot> snapshot) {
   return Container(
    margin: EdgeInsets.only(top: 200),
     child:ListView(
     children: snapshot.map((data) => listSection(context, data)).toList(),
   )
   );
 }

3 个答案:

答案 0 :(得分:3)

where(Common.DATE_TIME,
              isGreaterThanOrEqualTo: DateTime(date.year, date.month, date.day))

这对我来说太棒了...

答案 1 :(得分:0)

就目前而言,我不知道是否可以使用firestore API来做到这一点。但这可能是暂时的解决方法

  const oneDay = 60 * 60 * 24 * 1000;
  List filteredList = List();      

     Widget _buildBody(BuildContext context) {
     return StreamBuilder<QuerySnapshot>(
       stream: Firestore.instance.collection('baby')
            .snapshots(),
       builder: (context, snapshot) {
         if (!snapshot.hasData) return LinearProgressIndicator();

         return _buildList(context, snapshot.data.documents);
       },
     );
    }

    Widget _buildList(BuildContext context, List<DocumentSnapshot> snapshot){
      snapshot.forEach((snap){ 
  if((DateTime.now()
    .difference(DateTime.parse(snap.data['timestamp']
    .toDate().toString())))
    .inMilliseconds <= oneDay){
       filteredList.add(snap);
    }
  });

 return Container(
        margin: EdgeInsets.only(top: 200),
         child:ListView(
         children: filteredList.map((data) => listSection(context, data)).toList(),
       )
       );
     }

答案 2 :(得分:0)

您可以使用客户端库cloud_firestore/cloud_firestore.dart,它是用于Firestore的Dart客户端库。

使用它您可以获取如下数据:

var today = new DateTime.now();
today = new DateTime(today.year, today.month, today.day);
var data = Firestore.instance.collection('talks')
               .where("topic", isGreaterThan: today)
               .snapshots()

此后,您可以照常使用数据来形成小部件

here,您可以在客户端库中看到where语法。