Стоит ли платить за одно чтение, когда я начинаю слушать один документ в Firestore, даже если документ не изменился? - PullRequest
1 голос
/ 09 июля 2019

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

Согласно документации :

Минимальная плата за запросы За каждый выполняемый запрос взимается минимальная плата за чтение одного документа, даже если запрос не дал результатов.

Stream<QuerySnapshot> stream = Firestore().collection("someCollection").where("someField", isGreaterThan: 42).snapshots();
stream.listen((querySnapshot) => doSomething());

Кроме того, я знаю, что мне не нужно платить, если я использую простой get для чтения какого-либо документа, если этот документ уже существует в автономном кэше, и не был изменен в Firestore (в соответствии с Doug Stevenson ).

 DocumentSnapshot doc = await Firestore().collection("someCollection").document("documentID").get();

Мой вопрос:

Предположим, что документ уже существует в моем автономном кэше и не изменялся в Firestore с тех пор.

Если вместо get я включаю слушатель к этому единственному документу (DocumentSnapshot, а не QuerySnapshot), вот так:

Stream<DocumentSnapshot> stream = Firestore().collection("someCollection").document("documentID").snapshots();
stream.listen((documentSnapshot) => doSomething());

Буду ли я платить за одно чтение, когда этот слушатель включен?

1 Ответ

1 голос
/ 09 июля 2019

Буду ли я платить за одно чтение, когда этот слушатель включен?

Нет. Если вы включаете прослушиватель, который прослушивает один документ, с вас не взимается плата, поскольку документ уже существует в кэше. Помните, что вам предъявлено обвинение в том, что один документ прочитан, когда запрос не возвращает никаких результатов, но в вашем случае вы не выполняете какой-либо запрос, вы просто слушаете изменение документа. Нет смысла платить за чтение одного документа каждый раз, когда вы начинаете прослушивать изменения или каждый раз, когда вы открываете приложение. В этом прелесть Firestore: у вас есть локальная копия вашей базы данных, поэтому вы не можете платить за кэшированные документы, если только документы не изменены в серверной части.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...