У меня есть класс, который имеет несколько встроенных массивов, а также пару объектов.Я использую Flutter и не могу понять, как читать / писать в Cloud Firestore.
Я могу читать / писать элементы данных, которые являются типами по умолчанию, такими как String и Int.Вот конструктор, который я пытаюсь использовать для создания экземпляра объекта из DocumentSnapshot:
class GameReview {
String name;
int howPopular;
List<String> reviewers;
}
class ItemCount {
int itemType;
int count;
ItemCount.fromMap(Map<dynamic, dynamic> data)
: itemType = data['itemType'],
count = data['count'];
}
class GameRecord {
// Header members
String documentID;
String name;
int creationTimestamp;
List<int> ratings = new List<int>();
List<String> players = new List<String>();
GameReview gameReview;
List<ItemCount> itemCounts = new List<ItemCount>();
GameRecord.fromSnapshot(DocumentSnapshot snapshot)
: documentID = snapshot.documentID,
name = snapshot['name'],
creationTimestamp = snapshot['creationTimestamp'],
ratings = snapshot['ratings'], // ERROR on run
players = snapshot['players'], // ERROR on run
gameReview = snapshot['gameReview']; // ERROR on run
itemCount = ????
}
Он работает до тех пор, пока я не добавлю последние 3 участника (рейтинги, игроков и gameReview).Это должно быть очевидно, но тем не менее, это ускользает от меня.
Справка!
ОБНОВЛЕНИЕ: Вот пример документа, хранящегося в Cloud Firestore.Это хранится в одном документе.Другими словами, я не использую вложенные коллекции для встроенных объектов.Я поместил это в формат JSON для ясности.Надеюсь, это поможет.
{
"documentID": "asd8didjeurkff3",
"name": "My Game Record",
"creationTimestamp": 1235434,
"ratings": [
4,
2012,
4
],
"players": [
"Fred",
"Sue",
"John"
],
"gameReview": {
"name": "Review 1",
"howPopular": 5,
"reviewers": [
"Bob",
"Hanna",
"George"
]
},
"itemCounts": [
{
"itemType": 2,
"count": 3
},
{
"itemType": 1,
"count": 2
}
]
}
ОБНОВЛЕНИЕ 2: Я не включил полное определение класса, потому что думал, что для меня будет очевидно, как делать все остальное, но, увы, это не так.
У меня есть список объектов, которые я хочу загрузить. Ответ vbandrade на BANG, но я не могу понять, как я должен создать список объектов.List.from (...) ищет итератор, а не созданный класс.Я уверен, что это какой-то вариант создания нового объекта и добавления его в список, но я немного запутался(см. правки в классе выше, в частности член "itemCounts".
Спасибо !!!