Pessoal…
Tem o app que a estrutura o realtime database (firebase) é baseada no UID gerado ao criar (Email/Senha) o usuário no firebaseauth.
Até aqui tudo bem, agora estamos querendo implementar uma nova rotina que este usuario acima pode cadastrar novos usuários para sua empresa, e eles podem tem acesso ao sistema/dados.
Qual a melhor forma desses novos usuários ter acesso ao dados do banco já que o UID desses usuários não serão iguais do usuário que criou a conta e cadastrou todos os dados?
Não sei se consegui ser claro.
Valeu
Acho que tem algo errado ai,
Você está criando sua database com a raiz do UID do usuário?
Você cria um UID (usuario mestre) e dentro dele vc coloca os outros UIDS (usuarios dos usuarios)
Então ficaria:
A54FSAFA3SS52Q (Usuário Mestre)
- LKFDJSLGDF15613 (Usuário Filho 1)
- OIHIOGFJHLER984 (Usuário FIlho 2)
POJFDKGKDFMGFG (Usuário Mestre)
- KGJSDLKJGJLDSKL (Usuário Filho 1)
- 465DS456G4S5GSA (Usuário FIlho 2)
Entendi, outra dúvida, exemplo abaixo
POJFDKGKDFMGFG (Usuário Mestre)
- KGJSDLKJGJLDSKL (Usuário Filho 1)
nome
idade
email
Não sabendo as duas chaves (mestre/filho) é possível na query eu encontrar determinado email?
Se sim, como eu faria?
vlw.
Suponhamos que vc tem a classe já implementada:
Classe Usuario
id_filho
id_mestre
nome
email
.....
DatabaseReference reference = FirebaseDatabase.getInstance().getReference("SuaTabela");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
//aqui vc printa pra saber o que ele ta pegando:
System.out.println(snapshot);
//Nao vai pegar o q vc quer, tem que fazer mais um for:
for(DataSnapshot ds: snapshot.getChildren()){
Usuario usuario = ds.getValue(Usuario.class);
//printa de novo
System.out.println(ds);
System.out.println(usuario.getEmail());
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Entendi, legal … funcionou. Obrigado.
Mais utilizando uma query igual abaixo não funcionada
Query query = databaseReference
.orderByChild("email")
.equalTo("ze_mane@gmail.com");
Isso daria ou vou ter checar com uma condição para localizar o email que eu quero?
Mais desde já muito obrigado.