将列表上传到Google Firestore

时间:2019-03-29 13:24:38

标签: list firebase arraylist flutter google-cloud-firestore

我想将Flutter测试应用中的列表添加到Google Firestore中。

这是我的方法,它会添加所有数据:

void postToFireStore(
{String mediaUrl, String location, String description}) {

var reference = Firestore.instance.collection('insta_posts');

  reference.add({
    "marked_friends": [chipstuete.toString()],
    "username": currentUserModel.username,
    "location": location,
    "likes": {},
    "mediaUrl": mediaUrl,
    "description": description,
    "ownerId": googleSignIn.currentUser.id,
    "timestamp": new DateTime.now().toString(),

    }).then((DocumentReference doc) {
    String docId = doc.documentID;
    reference.document(docId).updateData({"postId": docId});
  });
}

一切正常,请期待列表“ marked_friends” ...

列表“ chipstuete”具有多个字符串:

  

[Martin Seubert,Lena Hessler和Vivien Jones]

但是我的Firestore看起来像这样:

enter image description here

目前,整个列表存储在marked_friends [0] ...

我需要更改什么,列表“ chipstuete”的每个条目都存储在Firestore中数组“ marked_friends”的单独字段中?

最诚挚的问候!

2 个答案:

答案 0 :(得分:1)

您必须在AppProfile类中添加一个将其序列化为List的方法。

因此,在您的AppProfile类中:

class AppProfile {

  ... // Whatever fields/methods you have

  // Add this method
  List<String> getFriendList() {
    // Somehow implement it so it returns a List<String> based on your fields
    return ['name1','name2','name3'];
  }
}

那你就可以做

"marked_friends": chipstuete.getFriendList(),

答案 1 :(得分:0)

我有解决办法。

就像SwiftingDuster说的那样,我需要一个新方法将其序列化为列表:

List<String> toList() {

  chipstuete.forEach((item) {
    newtuete.add(item.toString());
  });

  return newtuete.toList();
}

之后,我只需在我的postToFirestore()方法中调用toList()并添加“ marked_friends”:newtuete。而已!