Как отфильтровать коллекцию пожарного магазина по нескольким идентификаторам - PullRequest
0 голосов
/ 07 января 2019

Итак, в моей схеме базы данных есть что-то вроде этого

/collections/users/userId1 { 
   ...,
   id,
   relatedContracts: [id1, id2, id3]
}

/collections/contracts/contractId {
   ...,
   id,
}

В моих правилах безопасности Firebase у меня есть это

    match /contracts/{contract} {
       function isOwnContract() {
           return request.auth.id == resource.data.creatorId || request.auth.id == recipientId
       }
       allow read, write: if isOwnContract()
     }

Теперь я очень озадачен тем, как фильтровать клиента, чтобы получать только мои связанные контракты. Если введение правил безопасности я больше не могу делать свою фильтрацию на клиенте.

Я знаю, что это существует

firestore.collection(CONTRACTS).where(id, "==", contractId)

Но как мне сделать эту фильтрацию на основе нескольких идентификаторов

1 Ответ

0 голосов
/ 07 января 2019

В настоящее время вы не можете получить несколько идентификаторов на запрос на клиенте , поэтому вы можете выбрать:

  1. Повторяйте каждый идентификатор контракта в пользовательском документе и извлекайте каждый документ отдельно (что не так плохо, как вы, вероятно, думаете)
  2. Поддерживать другое отношение в каждом контракте, содержащем список пользователей, которые имеют это отношение. Затем найдите в коллекции контрактов идентификатор пользователя в этом списке.
...