【发布时间】:2021-01-27 08:03:27
【问题描述】:
我正在开发一个 Flutter 应用程序,每个用户都可以在其中创建项目并与其他用户共享项目。我创建了一个“共享”集合,其中每个用户的 ID 都是一个文档,并且在该文档中,与该用户共享的所有项目 ID 都是这样收集的,其中一个布尔值表示共享是否已被已接受:
接下来,我自己创建了一个项目集合,如下所示:
现在,我想查询“项目”集合并仅返回给定用户的“共享”列表中的项目。首先,如何获取共享列表 ID 中的每个文档?其次,是否可以使用.where() 子句将该 ID 与 List 的内容进行比较?
我一直在尝试这样的事情,但无济于事:
Stream<List<Map<String, dynamic>>> getListOfProjectsForUser({@required List<String> shares}) {
var ref = _firestore.collection('projects');
return ref
.where(shares, arrayContains: ref.id)
.snapshots()
.map((QuerySnapshot snapshot) => snapshot.docs.map((DocumentSnapshot doc) => doc.data()).toList());
}
我也试过这个:
Stream<List<Map<String, dynamic>>> getListOfProjectsForUser({@required List<String> shares}) {
var ref = _firestore.collection('projects');
return ref
.where(shares, arrayContains: FieldPath.documentId)
.snapshots()
.map((QuerySnapshot snapshot) => snapshot.docs.map((DocumentSnapshot doc) => doc.data()).toList());
}
我正在尝试做的事情是否可能?我已经搞砸了这两天,我的头要爆炸了。任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
Doug 和 Frank 让我非常接近,但我在这里有一个后续问题:stackoverflow.com/questions/64346614/…
标签: firebase flutter google-cloud-firestore nosql