我想将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看起来像这样:
目前,整个列表存储在marked_friends [0] ...
我需要更改什么,列表“ chipstuete”的每个条目都存储在Firestore中数组“ marked_friends”的单独字段中?
最诚挚的问候!
答案 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。而已!