В 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});
(в этом случае я хочу, чтобы пользователь, создавший группу, был первым участником, а также администратором)

Этот первый 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);
});
@PaulKruger, я никогда не делал этого в дартс, но (может быть ??) альтернативой является пакетная запись. Вот ссылка на JS... firebase.google.com/docs/reference/js/…
Спасибо чувак! По крайней мере, это должно направить меня в правильном направлении :)
рад помочь. отредактировано, чтобы предложить -- не с высокой степенью достоверности -- пакетный подход к записи
ДУХ СПАСИБО! Мой следующий вопрос о стеке был бы «как редактировать пакет», но благодаря вашему коду я понял это! Я добавил правильный код в ваш ответ. Просто удалите свои материалы и используйте вместо них мои... Большое спасибо!!!
Спасибо, это решает проблему. Но нет ли способа сделать это с помощью одного "http-вызова"