Reputation: 17337
When using firestore
snapshot()
, and set a listener, Cloud Firestore sends your listener an initial snapshot of the data, and then another snapshot each time the documents change.
However if I close the app, and reopen it, does firestore make a read on all the data it already has queried or is there an internal sync system (for example if they store documents metadata, like updatedAt
they could only read documents that haven't been updated since x) ?
In other words. if I use onSnapshot()
listener, I will make x documents read initially, then 1 document each time a document changes. My question is: If I close the app and a document changes, then when I open the app, is 1 read made or x + 1 ?
It is important for me because I have a bunch of initial calls and I'm wondering how that'd affect the cost($).
It's also important to know for data modeling and how it affects the cost.
Upvotes: 2
Views: 704
Reputation: 293
It depends on the type of listener
OnChange()
will read only when data changes
addListenerForSingleValueEvent
will check just once, and if it is the onCreate
section, it will be executed immediately
addValueEventListener
will keep checking constantly, but will log as a read only if the data changes
Upvotes: 1
Reputation: 317477
Every time you perform a new query against the server (this is the default), it will cost a read, and the documents will have to be transferred. It will not use the cache unless there is no connection, or your specifically target the cache for the query. Quitting and returning to the app doesn't change this behavior at all.
I suggest reading this: https://medium.com/firebase-developers/firestore-clients-to-cache-or-not-to-cache-or-both-8f66a239c329
Upvotes: 4