# #firebase #flutter #dart #google-cloud-firestore
Вопрос:
я пытаюсь добавить больше элементов в подколлекцию в firebase.
здесь я сделал коллекцию курсов, а затем подколлекцию (разделы). я хочу добавить новые элементы(студентов) в разделы. для этого мне нужно указать путь к подразделу из firebase, но это жесткий код, и я хочу, чтобы он был гибким для любого раздела. все разделы имеют уникальный номер(SecID). есть ли способ, которым я могу найти определенный раздел и получить путь к нему, чтобы поместить его в .doc(«») ?
это код, с которым я работаю :
Future<void> courseSetup(String courseName, String cHours) async {
CollectionReference c = FirebaseFirestore.instance.collection('Courses').doc().collection("Sections");
FirebaseAuth auth = FirebaseAuth.instance;
c.add({'Course name': courseName, 'Course hours': cHours});
return;
}
атрибуты не показывают вложенные коллекции это моя база данных :
я борюсь с вложенной коллекцией в firebase, пожалуйста, помогите
Ответ №1:
Вызов doc()
без аргумента всегда создает новый уникальный идентификатор документа. Так что в этом звонке:
CollectionReference c = FirebaseFirestore.instance.collection('Courses').doc().collection("Sections");
В итоге вы Sections
получаете вложенную коллекцию нового документа, а не существующего курса, который вы хотите обновить. Вам нужно будет знать идентификатор курса, который вы хотите обновить, обычно сохраняя его в своем коде при чтении курсов из базы данных.
Как только вы это сделаете, вы сможете добавить раздел в этот раздел с помощью:
CollectionReference c = FirebaseFirestore.instance.collection('Courses').doc("courseID").collection("Sections");
Комментарии:
1. разве идентификатор курса не будет путем к коллекции ? разве это все еще не жестко закодировано ? если вы можете привести другой пример, было бы здорово
2. «Вам нужно будет знать идентификатор курса, который вы хотите обновить, обычно сохраняя его в своем коде при чтении курсов из базы данных».