Flutter — Как добавить поле ко всем документам в коллекции firebase

# #firebase #flutter #firebase-realtime-database #google-cloud-firestore

Вопрос:

Я использую огненную базу flutter. И я хочу, чтобы запрос добавлял ключ и значение ко всем документам в коллекции firebase.

Я пытаюсь использовать пакетную запись, но она добавляет новое поле с документами. Но не сливаться с существующими документами.

 var db= Firestore.instance();
var batch = db.batch();
batch.setData(
db.collection("users").document(),
{"status": "Approved"}
);
 

Когда я пытаюсь дать идентификатор документа, как document('id') это, добавьте только к этому документу.

Я пробую много и смотрю видео на YouTube, но не могу найти их до сих пор. Пожалуйста, помогите мне!

Комментарии:

1. setData всегда будет добавлять новый документ, вместо этого используйте update (), например, var db = FirebaseFirestore.instance; var batch = db.batch(); Ссылка на документ = db.collection(«пользователи»).doc(); Карта<Строка,строка> данные = {«статус»: «Одобрено»}; пакетное обновление(ссылка, данные);

Ответ №1:

Создайте фиктивную кнопку на одной из страниц вашего приложения. Нажатие кнопки должно добавить поле во все документы конкретной коллекции.

Здесь я использовал кнопку со значком, чтобы добавить пустое поле под названием «биография» в коллекцию «пользователи».

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

 IconButton(
                      onPressed: () {
                        FirebaseFirestore.instance
                            .collection('users')
                            .get()
                            .then(
                              (value) => value.docs.forEach(
                                (element) {
                                  var docRef = FirebaseFirestore.instance
                                      .collection('users')
                                      .doc(element.id);

                                  docRef.update({'bio': ''});
                                },
                              ),
                            );
                      },
                      icon: Icon(Icons.done),
                    ),
 

Ответ №2:

Это связано с тем, что вы используете метод setData (), вместо этого вы должны использовать updateData() для обновления:

 var db= Firestore.instance();
var batch = db.batch();
batch.updateData(
db.collection("users").document(),
{"status": "Approved"}
);