【发布时间】:2021-11-19 02:07:57
【问题描述】:
大家好,我有两个顶级集合,一个用户集合和一个标签集合。在每个用户文档中,我有一个文档 ID 的数组字段,该数组中的每个元素代表选项卡集合中的一个文档(有点像一个引用或指向该文档的指针),我想听听实时变化带有 ID 列表的用户/文档,并监听选项卡集合中相应文档的更改。
以下是我目前的代码,它有两个问题。流无法在客户端工作 - 当我在云 Firestore 中更新文档时,我没有收到更新的快照。另外,为了让我获得 tabIds 的列表,我目前正在查询返回流的 cloud firestore,但是 whereIn 运算符仅接受对象列表,因此我不确定如何处理。
Stream<List<Tab>> get tabs {
var tabIds = _db.collection('users').doc(user.uid).snapshots().where((event) => event.get('tabs'));
return _db
.collection('tabs')
.where(FieldPath.documentId, whereIn: tabIds)
.snapshots()
.map((list) =>
list.docs.map((doc) => Tab.fromJson(doc.data())).toList());
}
【问题讨论】:
-
对实际文本有强烈的偏好,在此处剪切和粘贴并格式化 - 如果只有这样 其他 人(stackEXCHANGE 和 stackOVERFLOW 的整个点)可以搜索类似的问题。绝对最低限度,图像应该张贴在这里。更好的是,剪切'n'粘贴您遇到困难的代码。
-
我确实发布了一张图片,但我不确定它为什么嵌入到问题上方的链接中。就代码而言,这是我遇到困难的部分。我无法为上述问题生成可用的代码。我是 Firestore 和 Firebase 的新手。
-
我们不是代码编写服务,因此我们需要查看您尝试过的代码,即使它不起作用。请花点时间查看How to create a Minimal, Complete, and Verifiable example。这个问题也有点不清楚 - 你想用 ID 列表来监听用户/文档的变化,还是你想使用该列表来监听选项卡集合中相应文档的变化?
-
老实说,我想两者都做。
-
请不要在 cmets 中发布代码;这是不可能的阅读。用您的代码更新 question 并解释它的作用 - 或者至少是您正在尝试做的事情。那我们就来看看吧!
标签: firebase flutter dart google-cloud-firestore stream