# #database #firebase #flutter #dart #google-cloud-firestore
Вопрос:
У меня есть простое приложение, в котором я могу отправить идентификатор (строку) в firebase firestore, и оно сохраняет объект с идентификатором и текущим временем.
Во время тестирования я заметил одну вещь: когда я удаляю данные из firestore прямо через консоль, мое приложение все еще думает, что данные находятся в базе данных, а когда я добавляю данные через консоль, мое приложение их не видит. Он работает должным образом только тогда, когда данные добавляются и удаляются из моего приложения. Это почему? Разве приложение не должно просто видеть, что в настоящее время находится в базе данных, без этого странного поведения?
Как я получаю данные из базы данных во время тестирования:
static Future<void> printEntries() async {
QuerySnapshot snapshot = await songList.snapshots().first;
snapshot.docs.forEach((element) {
print('Element in database: ${element['id']}');
});
print('***************');
}
Эта функция вызывается, когда я нажимаю кнопку. Ничего особенного.
Список песен-это переменная, объявленная ранее следующим образом:
static final CollectionReference songList = FirebaseFirestore.instance.collection('MyRoom');
Я попытался удалить всю коллекцию, но каким-то образом мое приложение все равно получает данные, сохраненные ранее, хотя консоль firestore их не показывает.
Ответ №1:
Firestore кэширует данные для вас, если вы хотите получить обновленные данные, вам необходимо прослушать такое событие с помощью,
db.collection("cities").doc("SF")
.onSnapshot((doc) => {
console.log("Current data: ", doc.data());
});