запрос пожарного депо в коллекции - PullRequest
0 голосов
/ 04 мая 2018

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

Это, к сожалению, означает, что другие операции становятся немного сложнее, но я надеюсь, что с помощью структуры данных firestore есть способ решить мою проблему.

Я регистрирую серию проверок, структура выглядит так: checkins/{userid}/log/{checkin} Объект checkin содержит space_id, который соотносится с другой коллекцией верхнего уровня, называемой пробелами.

Теперь я хочу посчитать количество проверок, сделанных ВСЕМИ пользователями в выбранном пространстве, но я не знаю, как бы я попросил firebase посмотреть на ВСЕ userid / log / checkin's и найти те, которые с space_id = x.

Есть ли аккуратный и эффективный способ сделать это?

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

Firebase поддерживает запросы групп сбора по состоянию на май 2019 года.

В этом случае вы можете написать:

db.collectionGroup('log')
  .where('space_id', '==', '123')
  .get()
  .then(function (querySnapshot) {
    console.log('Number of check-ins:', querySnapshot.size);
  });
0 голосов
/ 04 мая 2018

На мой взгляд, это одна из главных слабостей в Firestore. Хотя в документации подчеркивается, что она поддерживает более сложные структуры данных, чем база Firebase, вам все равно как-то необходимо использовать схему уплощенных данных для запроса этих структур.

То, что вы ищете, это так называемый запрос группы сбора (см. Подколлекции запросов Firestore )

В вашем текущем дизайне вам придется запрашивать все проверки и впоследствии запрашивать у всех идентификатор пространства.

На вашей позиции я бы использовал структуру верхнего уровня, поскольку процессы сбора пользовательских данных (GDPR), вероятно, редки по сравнению со случайными операциями.

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