Firestore: как добавить документ и документ подколлекции - PullRequest
0 голосов
/ 09 июля 2019

В Flireter Firestore я делаю это, чтобы добавить документ:

Firestore.instance
    .collection('groups').add({'name': 'Group Name 1'});

Но как мне добавить документ и добавить документ во вложенную коллекцию, мне нужно что-то вроде этого:

Firestore.instance
    .collection('groups').add({'name': 'Group Name 1'})
    .collection('members').add({'name': 'newMemberName', 'isAdmin': true});

(в данном случае я хочу, чтобы пользователь, который создал группу, был первым членом, а также администратор)

1 Ответ

1 голос
/ 09 июля 2019

Этот первый add возвращает «будущее», которое разрешается в ссылку на документ нового документа.Вы можете использовать это значение с помощью «await» -ing для него ...

var docRef = await Firestore.instance.collection('groups').add({'name': 'Group Name 1'});
docRef.collection('members').add({'name': 'newMemberName', 'isAdmin': true});

Edit

Чтобы обработать один http-запрос, вы можете попробовать выполнить пакет записи.

Пол Редактировать:

      // Add new group to database
      var batch = Firestore.instance.batch();

      // Create the group
      var newGroup = Firestore.instance.collection('groups').document();
      batch.setData(newGroup, {'name': value});

      // Create the new members subcollection
      var newMember = newGroup.collection('members').document();
      batch.setData(newMember, {
        'users_documentId': currentUser.documentId,
        'users_displayName': currentUser.displayName,
        'isAdmin': true
      });

      // Commit the batch edits
      batch.commit().catchError((err) {
        print(err);
      });
...