flutter 使用Map字段过滤Cloud Firestore中的流

omvjsjqw  于 2022-12-19  发布在  Flutter
关注(0)|答案(1)|浏览(127)

我有一个名为chats的Cloud Firestore集合,它们的文档具有以下结构:

下面是同一集合中的另一个文档:

正如您所看到的,两个文档都有一个公共的users项,在本例中,公共项是modestovasco@gmail.com: null,但是在第一个文档中,该项位于第一个位置,而在第二个文档中,该项位于第二个位置。
我需要创建一个流,该流应该过滤chats集合中的文档,这些文档在users字段中有特定的电子邮件,并且应该过滤两个地方,第一个和第二个。
在当前状态下,如果我正在查找modestovasco@gmail.com,过滤器应该检索这两个文档。
下面是我当前的过滤器代码:

FirebaseFirestore.instance
                      .collection("chats")
                      .where('users', isGreaterThanOrEqualTo: {usuario!.email: null})
                      .snapshots()

此流仅获取第一个文档。

yyyllmsg

yyyllmsg1#

你可以在where子句上使用arrayContainsAny方法,它会给予你那些给定的电子邮件出现在用户字段上的文档,不管电子邮件出现在哪个地方。
修改后的代码如下所示:

final String emailTobeChecked = 'modestovasco@gmail.com';
FirebaseFirestore.instance
  .collection('chats')
  .where('users', arrayContainsAny: emailTobeChecked)
  .snapshots()

如需了解更多信息,请点击此处

相关问题