добавление элементов в определенную подборку в firebase с помощью flutter

# #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. «Вам нужно будет знать идентификатор курса, который вы хотите обновить, обычно сохраняя его в своем коде при чтении курсов из базы данных».