Muitos-para-muitos usando o Firebase

Vamos dizer que eu tenho dois tipos de objetos usuários e contas. Os usuários podem ter muitas contas e compartilhá-las com outros usuários. Portanto, AccountA pode estar disponível para User1 e User2. Enquanto AccountB está disponível somente para User1. Portanto, o User1 tem duas contas e o User2 tem uma conta.

Qual é a maneira "firebase" de estruturar isso?

Eu estava inicialmente pensando que os usuários poderiam armazenar uma série de contas a que pertencem.

users: {
  1: {
    name: 'Ted',
    accounts: [1, 2]
  }
  2: {
    name: 'Frank',
    accounts: [1]
  }
}

accounts: {
  1: {
    name: "Checking"
  },
  2: {
    name: "Savings"
  }
}

Ou a conta teria uma variedade de usuários.

users: {
  1: {
    name: 'Ted'
  }
  2: {
    name: 'Frank'
  }
}

accounts: {
  1: {
    name: "Checking",
    users: [1, 2]
  },
  2: {
    name: "Savings"
    users: [1]
  }
}

Eu estou querendo saber o caminho que me permite encontrar facilmente as contas de um usuário para que, quando Ted faz o login, eu possa listar as contas que ele pertence sem ter que puxar para baixo o banco de dados inteiro. Por segurança, não quero todos esses dados em sua máquina.

Pergunta # 1 As regras de segurança cuidariam disso? Com isso quero dizer que estou planejando definir minha regra de segurança de modo que os usuários possam apenas as contas a que pertencem. Espero que, se eu consultar "/ accounts", eu receba apenas as contas que o usuário pode acessar ... não?

Pergunta # 2 Existe um mecanismo para consultar uma lista de itens. Como "/ accounts / [1,2]" para que eu receba as contas "/ accounts / 1" e "/ accounts / 2"?

Obrigado por qualquer informação que você possa compartilhar.

questionAnswers(1)

yourAnswerToTheQuestion