Flutter & Firebase:如何检查某个项目是不是存在于 Firebase 文档中的数组中

Posted

技术标签:

【中文标题】Flutter & Firebase:如何检查某个项目是不是存在于 Firebase 文档中的数组中【英文标题】:Flutter & Firebase: How to check if an item exists inside of an array within a Firebase documentFlutter & Firebase:如何检查某个项目是否存在于 Firebase 文档中的数组中 【发布时间】:2021-07-30 15:53:02 【问题描述】:

我正在尝试等待用户(数组)检查存在值我该怎么做?

// 如果 waitUser 数组字段 存在 2 return text("this text") else return text("other text")

      body: StreamBuilder(
    stream: FirebaseFirestore.instance
        .collection('events')
        .where('eventCity', isEqualTo: 'Ankara')
        .snapshots(),
    builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) 
      if (!snapshot.hasData) 
        // ERROR
        return Center(
          child: CircularProgressIndicator(),
        );
       else 
        return Container(
          child: ListView(
            scrollDirection: Axis.vertical,
            children: snapshot.data.docs.map((document) 
              // if waitUser array field exist 2 return text("this text") else return text("other text")
            ).toList(),
          ),
        );
      
    ,
  ),

【问题讨论】:

你想检查waituser是否存在或者waituser是否有一些值?两者都不一样 snapshot.data.docs.contains('waitUser'); 你可以这样做。如果字段 waituser 存在 true/false,这将返回布尔值。 waitUser 字段是数组我想检查字段是否存在于数组中 【参考方案1】:

在构建器的 else 部分执行以下操作:

return Container(
          child: ListView(
            scrollDirection: Axis.vertical,
            children: snapshot.data.docs.map((document) 
              // Get the waitUser array from the document.
              List<dynamic> waitUser = document.data()["waitUser"] as List<dynamic>;

              // Check for "2" in the array.
              if (waitUser.contains("2")) 
                // "2" was in the array.
                return text("this text");
               else 
                // "2" was not in the array.
                return text("other text");
              
            ).toList(),
          ),
        );

这将收集符合eventCity == "Ankara" 标准的每个文档。对于这些文档中的每一个,它将检查waitUser 数组中的“2”。如果数组中存在“2”,则返回text("this text");否则,它将返回text("other text")

【讨论】:

谢谢BillyBobTheRedneckProgrammer!

以上是关于Flutter & Firebase:如何检查某个项目是不是存在于 Firebase 文档中的数组中的主要内容,如果未能解决你的问题,请参考以下文章

Flutter & Firebase - 如何只允许每台设备有 1 个帐户

Flutter & Firebase - 从文档中获取特定字段

Flutter & Firebase - Firebase Analytics setUserProperty for Anonymous users

Flutter & Firebase:上传图片前的压缩

Flutter & firebase - StreamBuilder 未加载

如何在 Flutter 和 Firebase 的前台打印(message.data)