Сохранить список в модели как коллекцию в Firestore - PullRequest
0 голосов
/ 17 января 2019

Я бы хотел сохранить свой адрес в firestore как коллекцию, а не как массив. Как я могу это сделать?

См. Результат, который код выдает в firestore.

enter image description here

===

код:

class User {
  String id;
  String name;
  String email;
  List<Address> address = new List<Address>();

  User({this.id, this.name, this.email, this.address});

  User.fromMap(Map<String, dynamic> map) {
    this.id = map['id'];
    this.name = map['name'];
    this.email = map['email'];

    if (map['address'] == null) {
      this.address = new List<Address>();
    } else {
      this.address= (map['address'] as List).map((i) => Address.fromMap(i)).toList();
    }
  }

  Map<String, dynamic> toMap() {
    return {'id': id, 'name': name, 'email': email, 'address': address};
  }
}

===

class Address {
  String test;

  Address ({this.test});

  Address.fromMap(Map<String, dynamic> map) {
    this.test = map['test'];
  }

  Map<String, dynamic> toMap() {
    return {
      'test': test
  }
}

===

В классе ApiProvider

void addUser(User user) async {   
    Map<String, dynamic> userData = user.ToMap();
    await Firestore.instance
    .collection('user')
    .add(userData)
    .then((document) => userId = document.documentID);
  }

1 Ответ

0 голосов
/ 17 января 2019

Это лучший способ?

void addUser(User user) async {   
    Map<String, dynamic> userData = user.ToMap();
    await Firestore.instance.collection('user').add(userData).then(
      (document) {
        userId = document.documentID;
        for (var i = 0; i < user.address.length; i++) {
          Firestore.instance
              .collection('user')
              .document('$userId')
              .collection('address')
              .add(user.address.get(i));
            }
          },
        );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...