Я пытаюсь перейти с базы данных реального времени Firebase на облачное хранилище пожаров, чтобы использовать «сложные» запросы среди коллекций, но я обнаружил некоторые «проблемы», которые не знаю, как решить.
Мой Сервер использует Express JS и Firebase Admin SDK. Я пытаюсь создать маршрутизатор CRUD для панели администратора, но получаю следующую ошибку:
"9 FAILED_PRECONDITION: для запроса требуется индекс. Вы можете создать его здесь: ...
Когда я получаю доступ к этому URL (...), я получаю сообщение об ошибке, у меня недостаточно прав ... Ну, во всяком случае, после некоторых исследований я понял, что для "сложных" запросов нужны индексы, и они имеют быть более чем одним.
Это мой текущий код маршрутизатора, поэтому вы можете увидеть, чего я хочу достичь:
// GET - Get users
router.get('/', async (req: Request, res: Response) => {
...
let ref: any = db.collection('users').orderBy('createdAt');
Object.keys(req.query).forEach(key => {
ref = ref.where(key, '==', req.query[key]);
});
...
});
Как вы можете видеть, когда я повторяю ключ req.query
, я добавление условного оператора в запрос. Моя идея состоит в том, чтобы программно добавлять пользовательские фильтры из клиента.
В соответствии с тем, что я понял из документации, я должен создать комплексный тип индекса для каждого свойства документа.
Поэтому, что я должен сделать, чтобы достичь упомянутой идеи? Заранее спасибо.