У меня есть это поле для коллекции в users
с двумя статусами condition1
и condition2
. И я также хотел заказать это в порядке убывания. Я попробовал это с этим, но он покажет, что мне сначала нужно создать индекс.
status
находится в строке. И createdAt
находится в отметке времени
const userRef = collection(db, "users");
const q = query(
ordersRef,
where("status", "= = ", "Condition1"),
orderBy("createdAt", "desc")
);
const querySnapshot = await getDocs(q);
Кроме того, необходимо ли фильтровать это с помощью Firebase, или я могу просто фильтровать с помощью Javascript? Тем не менее, я все еще хотел бы знать, как я могу использовать индексацию здесь.
Если вы попытаетесь выполнить вышеуказанный запрос без предварительного создания необходимого индекса, Cloud Firestore вернет сообщение об ошибке, содержащее ссылку, по которой вы можете перейти к создать недостающий индекс.
Это происходит всякий раз, когда вы пытаетесь выполнить запрос, не поддерживаемый индексом. Вы также можете определять составные индексы, в которых хранится отсортированное сопоставление всех документов в коллекции на основе упорядоченного списка полей, и управлять ими вручную с помощью консоли или с помощью файла Интерфейс командной строки Firebase.
Cloud Firestore не создает автоматически составные индексы, как это делается для индексов с одним полем, из-за большого количества возможных комбинаций полей. Вместо этого Cloud Firestore помогает вам определение и создание необходимых составных индексов при создании приложения. Перейдите по сгенерированной ссылке в консоль Firebase, просмотрите автоматически заполненную информацию и нажмите «Создать». Создание индексов может занять несколько минут, в зависимости от размера запроса.
После того, как вы их создадите, вы сможете увидеть свои индексы и их статус в разделе Composite Indexes. Если они все еще строятся, консоль Firebase включает строку состояния сборки.
Спасибо, я не знал, что переход по ссылке позволит Firestore уже построить индекс
В ошибке должна быть ссылка для создания требуемого индекса.