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