Индексирование Firebase для того же дубликата поля в документах нескольких пользователей - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь создать календарь бронирования для пользователей в firestore, но не хочу создавать индекс для каждого пользователя: поле "_timeStamp" и "_service".

Путь / _sharedData / _calendars / userID / eventID

var cal = db.collection("sharedData").doc("calendars").collection(userID);

var query = cal.where("_service", "==", _myService)
.where("_timeStamp", ">", _dStart)
.where("_timeStamp", "<", _dEnd)
.limit(200)
.get()

Единственный обходной путь, который я вижу, это практично, если я помещаю все пользовательские события в одну коллекцию, удаляя ID пользователя, а затем запрашиваю его, но я могу достичь предела сбора в 1 МБ.

Путь / _calendars / eventID

var cal = db.collection("calendars");

var query = cal.where("_userID", "==", _myUser)
.where("_service", "==", _myService)
.where("_timeStamp", ">", _dStart)
.where("_timeStamp", "<", _dEnd)
.limit(200)
.get()

1 Ответ

1 голос
/ 04 июня 2019

Я думаю, вы неправильно понимаете, что такое ограничение в 1 МБ. Единственный документированный лимит в 1 МБ применяется к максимальному размеру одного документа. У вас может быть практически неограниченное количество документов в коллекции, и вы можете эффективно запрашивать их все, пока вы создали индекс. Ваш второй подход должен быть в порядке.

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