# #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"}
);