如何绕过FireStore查询

问题描述

我是Flutter-Firestore的新朋友

我正在用Firebase学习Flutter,并创建了一个示例约会应用程序

我有一个流列表中的用户列表,并使用“列表”视图进行显示

Firestore.instance.collection('users').snapshots()

我学会了这样过滤

 .where((user) => user.age < settings.agemax && user.age > settings.agemin))

所有这些工作

我还有一个正在使用的子集,称为“短名单”(当前用户已列出的用户列表)。

Firestore.instance.collection('users').document(uid).collection('shortlist').snapshots()

现在,我正在尝试使用基于以下内容的过滤器重新定义我的第一个查询GetUsers

  1. 如何从所有用户流中排除我从流中获取的入围用户
  2. 同样,还需要过滤掉“匹配的用户”和“被阻止/拒绝的”用户

我相信我的问题是如何查询用户集合,并排除包含在Shortlist子集合中的uid记录。我打算对比赛使用相同的逻辑,并阻止它!我在正确的轨道上吗?

还...当用户进入列表/匹配/阻止某人时,我是否需要重新获取所有记录,因为流会更改,或者是否有一种方法可以从列表视图中删除该记录而无需重建,可能是我应该分开这个问题一分为二。

解决方法

如果我理解正确,您正在寻找not-in operator(刚刚介绍过)blog post

我希望该操作员尚未进入Flutter库,因为这可能需要一些时间。我建议检查即将发布的版本以查看何时着陆,或检查/修复存储库中的问题。

在此之前,无法从查询中排除结果,因此您将不得不在应用程序代码中exclude the items from the stream的结果。