Arrays 使用flatter从firestore获取用户阵列数据

Arrays 使用flatter从firestore获取用户阵列数据,arrays,flutter,dart,google-cloud-firestore,casting,Arrays,Flutter,Dart,Google Cloud Firestore,Casting,在我的firestore db中,我有目录用户,其中用户数据作为文档。文档有两个字段,字符串“displayName”和数组“friends”。我正在努力检索friends数组,并将其放入流中flutter的列表中。感谢您的帮助 我目前的代码如下: Stream<List<Memo>> get memos { var userdocs = Firestore.instance.collection('users').document(userid).documen

在我的firestore db中,我有目录用户,其中用户数据作为文档。文档有两个字段,字符串“displayName”和数组“friends”。我正在努力检索friends数组,并将其放入流中flutter的列表中。感谢您的帮助

我目前的代码如下:

Stream<List<Memo>> get memos {
    var userdocs = Firestore.instance.collection('users').document(userid).document('friends');
    // Complete request and do list conversions 

    // Do more work using results
}
我知道以前有人问过这个问题,但我对颤振非常陌生,异步编程不完全理解答案

颤振SDK返回一个流对象,该流对象将随时间实时显示数据库中的值。在您的示例中,您正在分配一个流值&需要一个列表。在异步编程中,您必须订阅一个事件,以便无论何时发出一个值,我们都可以执行所需的操作

var用户文档 Firestore.instance .收集用户 .documentuserid 收到 .然后是快照{ userdocs=ds.data } 如果在异步函数中,则使用wait

var userdocs=await Firestore.instance .收集用户 .documentuserid 收到
Firestore路径需要遵循此规则“collection/document/collection/document”,因此如果朋友是您必须调用的文档用户的集合。documentuserId之后的集合,这种方式为“documentuserId”。如果再次调用文档,则集合“friends”将不起作用。friends是字符串数组类型的文档。在过去,它是一个集合,每个文档代表一个朋友,但我无法检索文档名列表朋友名,因此我将其切换为这种格式,尽管前一种格式更可取为什么您无法获取朋友列表?这应该是可能的,您可以使用查询进行筛选。如果您在文档中使用数组,您将在此处使用数组Firestore.instance.collection'users'。documentuserid,因为数组是文档'userId'的一部分,所以您只需要找到一种从中提取数据的方法,但是,如果好友列表增长过多,使用数组可能不是一个好主意,因为它可以推断文档的限制大小,并且集合可以永远增长。他无法完全正确地阐明他想要什么。我建议编辑一下。让他看看并接受吧。谢谢你的建议,约格什,我已经接受了。这非常有效,谢谢。我还想问您是否可以演示如何从集合中获取所有文档名。这是我过去不知道该怎么做的事情,将来可能会证明是有用的。