当前位置: 首页 > 知识库问答 >
问题:

对于云Firestore Firebase Collection Ref上的IN查询,是否有一个等效的Flutter/Dart?

高墨一
2023-03-14
.where()

可用的查询功能有:

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

我已经测试了isEqualTo,如果我设置一个字符串传入,这可以很好地工作,但我不能让它与列表一起工作。在官方的Firebase文档中似乎有一个IN函数,该函数将提供最多10项:

https://firebase.google.com/docs/firestore/query-data/queries#in_and_array-contains-any

class _StarredChatState extends State<StarredChat> {

final _firestore = Firestore.instance;
  @override
  Widget build(BuildContext context) {
    final user = Provider.of<User>(context);
    final userID = user.uid;   
    return StreamBuilder<QuerySnapshot>( 
      stream: _firestore.collection('users/$userID/chats')
                        .snapshots(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) {
          return Center(
            child: CircularProgressIndicator(
              backgroundColor: Colors.lightBlueAccent,
            ),
          );
        }
        List<String> ChatIDList = [];
        final ChatIDs = snapshot.data.documents;
        for(var x in ChatIDs) {
          final ChatID = x.data['chats'].toString();
          ChatIDList.add(ChatID);
        }

        return StreamBuilder<QuerySnapshot>(
          stream: _firestore.collection('chatrooms')
                            // here is where I need the IN operator as neither
                            // arraycontains or isEqualTo give the desired result
                            .where('description', arrayContains: ChatIDList)
                            .snapshots(),
          builder: (context, snapshot) {

          if (!snapshot.hasData) {
          return Center(
            child: CircularProgressIndicator(
              backgroundColor: Colors.lightBlueAccent,
            ),
          );
        }
          //Here is where I want to return a ListBuilder for the above returned 
          //Streambuilder list

          }

          );


      }
    );
  }
}

谢谢

共有1个答案

伍嘉
2023-03-14

我猜您使用的是FlutterFire的cloud_firestore插件的旧版本,因为操作符肯定存在于当前版本的库中。请参阅这里的参考文档。

您可能希望升级到最新版本的FlutterFire,以获得运营商。

 类似资料:
  • 我想表达以下Haskell代码,只使用函子代数(即-不依赖于任何特定的容器类型,如): 对于可折叠/可遍历的函子是否有一个一般的first和rest概念? 是否有一种公认的惯用方法,仅使用函子代数,来移动可折叠/可遍历函子的内容?(请注意,上面的计算可以用英语描述为:“从右边移入一个值,然后将左边的值加回新的第一个值。”)

  • 问题内容: 我为一位同伴编写了一个网络刮板,以节省他的工作时间。它是使用,使用和打开Firefox浏览器编写的。 我已经在使用的Linux机器上亲自编写了此代码,因此Firefox实际上不会打开并干扰我的工作。 如何使其在Windows PC的虚拟显示器中运行? 问题答案: 您无法在Windows上运行的原因是PyVirtualDisplay使用Xvfb作为其显示,而Xvfb是X Window S

  • 我正在处理一个电影数据集,该数据集有电影、genre和桥接表in_Genre的表。下面的查询试图查找两部电影之间的共同类型。我做了两个连接来获得流派列表,并做了一个交叉来找到常见的流派。有没有更有效率的办法? null

  • 问题内容: 我刚刚开始学习SQLite。能够看到表格的详细信息(如MySQL的表格)会很高兴。不够好,因为它仅具有基本信息(例如,它不会显示列是否是某种字段)。SQLite有办法吗? 问题答案: 在SQLite的命令行实用程序有一个命令,显示你的创建语句。

  • 问题内容: 有没有类似于unix命令的Java库? 即: file命令是一个很好的工具。我需要一些可以告诉我文件是否确实是我想要的东西的东西。(即图片,文档等) 我知道我可以运行该命令,但是我正在寻找一个Java库,而不是运行实际的unix命令。 问题答案: 在Google上进行快速搜索(对于公认的非显而易见的) “ java魔术文件检测” 会弹出一个相当不错的文章,“从文件中获取Mime类型”,

  • 问题内容: 给定CQL中以下选择的示例: 给定ID是分区键,使用IN关系是否比执行多个查询更好?或者没有区别? 问题答案: 我记得不久后有人在Cassandra用户邮件列表中回答了这个问题,但是现在我找不到确切的消息。具有讽刺意味的是,Cassandra传播者Rebecca Mills刚刚发表了一篇文章解决了这个问题(使用Cassandra驱动程序时应该做的事情 ……要点#13和#22)。但是答案