【问题标题】:Firestore queries on FlutterFlutter 上的 Firestore 查询
【发布时间】:2018-08-02 22:05:14
【问题描述】:

如何使用 FlutterFire 中的 .where() 对 Firestore 执行查询?因为文档和示例没有涵盖这一点,所以我很困惑。我在这里没有找到其他问题,所以我希望我没有重复。

【问题讨论】:

    标签: firebase google-cloud-firestore flutter


    【解决方案1】:

    下面的示例遍历集合“字段”中的每个文档,并过滤“种植者”。没有这方面的文档,但您可以查看源代码。

    import 'package:cloud_firestore/cloud_firestore.dart';
    
    Firestore.instance.collection('fields').where('grower', isEqualTo: 1)
        .snapshots().listen(
              (data) => print('grower ${data.documents[0]['name']}')
        );
    

    来自源代码:

      Query where(
        String field, {
        dynamic isEqualTo,
        dynamic isLessThan,
        dynamic isLessThanOrEqualTo,
        dynamic isGreaterThan,
        dynamic isGreaterThanOrEqualTo,
        bool isNull,
      }) {..}
    

    【讨论】:

    • 这有帮助。谢谢。插件的文档需要改进。
    • 您好,我想知道您是否可以对多个值进行“where”过滤,在分句中放置多个值。示例:其中年龄大于 x,体重小于等。
    • 豪尔赫你不能查询不同值的范围
    • 嘿@Jorge 和其他仍在寻找多条件查询的人,我知道这可以使用多个where 子句。
    • > 显示代码:@override Stream> userfeeds(String userID) { return firestore.collection(path).where("userID", isEqualTo: userID).where( "projectID", isEqualTo: "sc_demo_project1").snapshots().map((snapshot) { return snapshot.documents.map((doc) { return UserFeedEntity( doc['projectID'], doc['installationID'], doc ['userID'], doc['feeds'].cast(), ); }).toList(); }); }
    【解决方案2】:

    如果你使用 streambuilder 的话

    StreamBuilder<QuerySnapshot>(
            stream: feed.where('uid', isEqualTo: 'aaaaaaaaaaaaa').snapshots(),
            builder: (_, snapshot) {
              if (snapshot.hasData) {
                return Column(
                  children: snapshot.data.docs
                      .map((e) => itemGrid(
                            e.data()['username'],
                            e.data()['uid'],
                            e.data()['uavatarUrl'],
                            e.data()['imageUrl'],
                            e.data()['desc'],
                          ))
                      .toList(),
                );
              } else {
                print('null');
                return Container();
              }
            }));
    

    【讨论】:

      【解决方案3】:

      更新(空安全码)

      由于很多类现在要么被弃用,要么被完全删除,请将此代码用于 Flutter 2.0 及更高版本。

      final querySnapshot = await FirebaseFirestore.instance
          .collection('employees')
          .limit(10)
          .where('age', isGreaterThan: 30)
          .get();
      
      for (var doc in querySnapshot.docs) {
        // Getting data directly
        String name = doc.get('name');
        
        // Getting data from map
        Map<String, dynamic> data = doc.data();
        int age = data['age'];
      }
      

      【讨论】:

      • 你拯救了我的一天,朋友!谢谢:D
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 2023-03-09
      • 2021-11-13
      • 2018-10-23
      • 2018-11-26
      • 2019-05-14
      • 2020-06-06
      相关资源
      最近更新 更多