# #javascript #firebase #google-cloud-platform #google-cloud-firestore
Вопрос:
Я создаю небольшое приложение для чата с expo, подключенное к Firestore. Вот код для извлечения данных чата:
useEffect(() => {
console.log("Loading snapShots on firebase");
const unsubscribe = db.collection('chats').onSnapshot(snapshot => (
setChats(snapshot.docs.map(doc => ({
id: doc.id,
data: doc.data()
})))
))
setTimeout(()=>{
unsubscribe();
}, 1000);
}, [])
Этот код обычно, если я правильно следовал документации, должен закрывать прослушиватель моментальных снимков через одну секунду. Если это произойдет, я все равно получу сообщение [Ошибка FirebaseError: превышена квота.], и мое приложение очень маленькое, данные тоже.
Комментарии:
1. Вы пытаетесь получить данные один раз, а затем закрыть прослушиватель? Почему бы не использовать
get()
вместо этого? Кроме того, если вы случайно превысили бесплатную квоту, вам придется подождать, пока она не сбросится или не обновится до blaze.2. Thx : Теперь я буду использовать get (). Я не совсем понимаю цель snashots: я вижу, что мои чтения взрываются очень быстро без каких-либо изменений в базе данных. Не кажется, что это работает именно так, как ожидалось ?
Ответ №1:
Квоты на огневую базу сбрасываются ежедневно в полночь (по тихоокеанскому времени). В зависимости от вашего часового пояса он может отличаться. Если вы находитесь в Европе, то на самом деле это может быть в середине дня. Поэтому, если вы достигнете дневного ограничения, вы ничего не сможете сделать, кроме как подождать до «следующего» дня. Или вы можете обновить план Spark.
Но помните, что как только вы получили сообщение о превышении квоты, ваш проект будет недоступен до тех пор, пока квоты не будут сброшены.
Как также упоминал @Dharmaraj в своем комментарии, вы также можете рассмотреть возможность использования get()
вызова, а не прослушивания изменений в реальном времени. Таким образом, вы подключаете прослушиватель, который автоматически отключается после получения данных.
Пожалуйста, также не забывайте держать консоль Firebase открытой, так как она считается еще одним клиентом Firestore, который считывает данные. Таким образом, вам также будет выставлен счет за чтение, поступающее с консоли.
Комментарии:
1. Thx Алекс: Кажется, я понял: Открытая консоль также работает как прослушиватель моментальных снимков, мэб? Потому что я только что изменил все свои вызовы приложений, чтобы получить (), и через час после этого у меня все еще было 19 тысяч прочитанных. Это имело бы смысл.
2. Да, консоль получает данные в режиме реального времени.