#dart #flutter #google-cloud-firestore
#dart #flutter #google-облако-firestore
Вопрос:
У меня есть модель с именем customStep
, и я хочу отправить список пользовательских шагов, вызываемых customSteps
, в firestore.
Вот код для этого:
Firestore.instance
.collection('customSteps')
.add({'customSteps': customSteps});
В коллекции customSteps есть документы, и эти документы состоят из поля customSteps для хранения массива customStep. Однако этот код помещает пустой массив в firestore. Как я могу это решить?
Комментарии:
1. Является ли customSteps списком объектов?
Ответ №1:
Чтобы отправить объект в Firestore, вам нужно преобразовать свой объект в map, добавьте эту функцию в свой класс:
Map<String, dynamic> toMap() {
return {
'yourField1': yourValue1,
'yourField2': yourValue1,
};
}
Чтобы отправить список пользовательских шагов, вам нужно преобразовать все объекты в карту, вы можете сделать это следующим способом:
static List<Map> ConvertCustomStepsToMap({List<CustomStep> customSteps}) {
List<Map> steps = [];
customSteps.forEach((CustomStep customStep) {
Map step = customStep.toMap();
steps.add(step);
});
return steps;
}
Ответ №2:
Вам нужно создать массив map, как показано на рисунке ниже. Эта карта будет вашим «объектом».
Итак, в вашей модели вам нужно объявить:
class Model {
ArrayList<CheckList> checklist = null
}
class CheckList implements Serializable {
String item = null,
boolean isChecked = false
}
Ответ №3:
В Firebase вы не можете сохранить пользовательскую модель внутри Document
Что вы действительно можете сделать, так это создать CustomStep
и CustomSteps
коллекцию.
Внутри вашего CustomSteps Document
вы можете создать array
of Reference
, который на самом деле является путем к вашему другому CustomStep
документу.
Это подразумевает получение идентификатора каждый раз, когда вы создаете CustomStep
в firestore и используете его в качестве ссылки на.
Надеюсь, это поможет!!