首页 > 解决方案 > 使用flutter从firestore获取用户数组数据

问题描述

在我的 firestore db 中,我的目录users包含用户数据为documents. 该文档有两个字段,String 'displayName' 和 Array 'friends'。我正在努力检索朋友数组并将其放入流中颤动的列表中。任何帮助表示赞赏。

我目前的代码如下:

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
}

我承认这个问题之前已经被问过,但我对颤振很陌生,异步编程并不完全理解答案

标签: arraysflutterdartgoogle-cloud-firestorecasting

解决方案


flutter SDK返回一个对象,该Stream对象将随着时间的推移发出值(实时数据库)。在您的示例中,您正在分配一个Stream值并期望一个List. 在异步编程中,您必须订阅一个事件,以便每当发出一个值时,我们就可以执行我们想要的操作。

var userdocs
Firestore.instance
    .collection("users")
    .document(userid)
    .get()
    .then((DocumentSnapshot ds) {
       userdocs = ds.data
     })

或者await如果你在一个async函数中使用

var userdocs = await Firestore.instance
    .collection("users")
    .document(userid)
    .get()

推荐阅读