Firestore: как искать во всей базе данных? - PullRequest
1 голос
/ 28 апреля 2020

Надеюсь, у вас все хорошо !!

Моя база данных выглядит следующим образом:

  • / CLASSROOM1 [коллекция] ----> ДАННЫЕ [документ] - -> ПОЛЬЗОВАТЕЛИ [коллекция] ----> ИД пользователя [документ] ----> [данные пользователя (поле)]

  • / CLASSROOM2 [коллекция] ----> DATAS [документ] ----> ПОЛЬЗОВАТЕЛИ [коллекция] ----> ИД пользователя [документ] ----> [пользовательские данные (поле)]

  • / CLASSROOM3 [коллекция ] ----> DATAS [документ] ----> ПОЛЬЗОВАТЕЛИ [коллекция] ----> userdId [документ] ----> [пользовательские данные (поле)]

Я хотел бы знать, возможно ли выполнить поиск по всей базе данных Firestore (CLASSROOM1, CLASSROOM2, CLASSROOM3 ...) и найти соответствие с "matricule" , введенным пользователем.

Цель здесь - найти поле "matricule" , найденное в документе "userId" , и прочитать его значение, чтобы узнать, какому пользователю оно принадлежит.

Спасибо. Я начинаю на Firestore

Ответы [ 3 ]

2 голосов
/ 28 апреля 2020

Не думаю, что это будет эффективно. Как упомянуто выше @Doug, для каждой коллекции потребуется собственный запрос, который, разумеется, опустошит ваш карман.

Лучший способ сделать это - создать другую коллекцию, содержащую матрицу в качестве документов, и сохранить {user id} в этом документе для каждого пользователя. Затем, когда вы хотите получить данные, запросите эту новую коллекцию, чтобы получить {user id}. Вы знаете, что такое user ID, теперь вы получаете все, что касается этого пользователя, в вашей базе данных Firestore.

2 голосов
/ 28 апреля 2020

Невозможно выполнить один запрос для нескольких коллекций с разными именами. Каждой коллекции потребуется собственный запрос, и вам нужно будет объединить результаты этих запросов на клиенте.

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

0 голосов
/ 28 апреля 2020

Я предполагаю, что у вас есть userId в качестве ввода и wnat соответствующей матрицы. Добавьте «userId» в качестве поля, тогда вы можете выполнить запрос группы коллекций к коллекциям «USERS»

collectionGroup("USERS").where("userId", "==", userId)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...