У меня вопрос, потому что я не хочу счет в 30 тысяч долларов.
Это приемлемый код для работы или есть лучший способ?
Я использую firebase 8.10.0 с Vue.js 2.6.11 и создал индекс в firestore.
Если в коллекции «пользователи» 1000 документов, и мне нужно применить фильтры в запросе, прежде чем делать запрос только для 50, используя этот код:
let users = db.collection("users");
users
.where("country" "= = " "uk")
.where("online" "= = " true)
.where("status" "= = " "play")
.orderBy("time", "asc")
.startAt(startTime)
.endAt(endTime)
.limit(50)
.get().then(() => { .... });
Буду ли я платить за 50 показаний или 1000 показаний или сколько?
Что они подразумевают под «Курсорами» в Сведения о выставлении счетов в Cloud Firestore?
Этот вопрос неплохой, но, похоже, он выходит за рамки StackOverflow, который отвечает на вопросы, связанные с кодом. Возможно, вам лучше обратиться в службу поддержки Firebase. (Чтобы дать вам некоторую надежду, я однажды отправил электронное письмо Firebase, и они ответили мне через 2 часа, так что ура.)
Я не согласен с тем, что это не по теме; этот вопрос зависит от кода, то есть «если я запущу этот код, сколько чтений произойдет». Используя язык вопросы и ответы не по теме, этот вопрос охватывает как часто используемый инструмент, так и практическую проблему, на которую можно ответить.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Плата взимается за количество документов, которые необходимо прочитать с сервера. Поскольку вы прочитали не более 50 документов, с вас никогда не будет взиматься плата за чтение более 50 документов с помощью этого запроса. Независимо от того, содержит ли коллекция 50 документов или 50 миллионов документов, плата за этот запрос будет составлять не более 50 чтений документов.
Единственным исключением из этого общего правила является отсутствие результатов запроса. В этом случае с вас будет взиматься плата за один прочитанный документ.
Что, если я не использую .limit(50) и в результатах будет 100 документов, с меня будет взиматься плата за 100 чтений?
и являются ли startAt(time) и endAt(time) смещением?
startAt и endAt — это не смещения, а фактические значения полей. Рекомендую прочитать firebase.google.com/docs/firestore/query-data/query-cursors
Я думаю, вам будет выставлен счет только за 50 прочтений, но не ставьте на это свой бюджет. Я пытаюсь экстраполировать, исходя из того, как работает база данных реального времени, и из моего собственного ограниченного понимания даже этого.