Firestore: как добавить документ и документ вложенной коллекции

В Flutter 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});

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

Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
1
0
558
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

Редактировать

Чтобы обработать один 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);
      });

Спасибо, это решает проблему. Но нет ли способа сделать это с помощью одного "http-вызова"

Paul Kruger 09.07.2019 18:27

@PaulKruger, я никогда не делал этого в дартс, но (может быть ??) альтернативой является пакетная запись. Вот ссылка на JS... firebase.google.com/docs/reference/js/…

danh 09.07.2019 18:31

Спасибо чувак! По крайней мере, это должно направить меня в правильном направлении :)

Paul Kruger 09.07.2019 18:35

рад помочь. отредактировано, чтобы предложить -- не с высокой степенью достоверности -- пакетный подход к записи

danh 09.07.2019 18:40

ДУХ СПАСИБО! Мой следующий вопрос о стеке был бы «как редактировать пакет», но благодаря вашему коду я понял это! Я добавил правильный код в ваш ответ. Просто удалите свои материалы и используйте вместо них мои... Большое спасибо!!!

Paul Kruger 09.07.2019 21:01

Другие вопросы по теме