¿Cómo comprobar si un niño existe en firebase?
Tengo un firebase que tiene un nodo llamado usuarios. El usuario da un nombre de usuario y quiero comprobar para ver si ese nombre de usuario ya existe como un hijo del nodo de usuarios. Este es el código que estoy intentando actualmente. La plataforma es android.
String myUsername = userNameInputET.getText().toString(); if(mUsersRef.child(myUsername) == null) { //do stuff } else { //do other stuff }
Este código no funciona, siempre va a la otra, incluso si el niño con el nombre de usuario dado no existe. ¿Qué hacer?
- FirebaseRecyclerAdapter con vista vacía
- Cómo obtener la cadena de base de datos firebase en tiempo real que contienen en clave única
- Cómo eliminar nodos secundarios en firebase android?
- Parámetros de eventos personalizados de Firebase Analytics
- NullPointer en toLowerCase pero no uso ese método en ninguna parte
- ¿Puedo hacer que Firebase utilice un proceso de inicio de sesión de nombre de usuario?
- Nuevas anotaciones de firebase json
- Cómo deshacerse de la advertencia de Android Studio "Resultado de getException () no lanzado"?
- Com.firebase.client.FirebaseException: Error al analizar el nodo con la clase CLASS_NAME android
- Asociar la ubicación de Geofire con la entrada de Firebase
- ¿Es posible cargar datos de forma sincronizada desde Firebase?
- ¿Cómo enviar correo electrónico de verificación con Firebase?
- Cómo buscar datos en Firebase Android
Se desperdicia dos horas en este problema. Probado todo, pero ninguna de las soluciones funcionaba. He utilizado los datos de lectura de código de firebase onChildAdded para obtener los datos de usuario a continuación, determinarlo utilizando si condición else.
En la creacion
mFirebaseDatabase=FirebaseDatabase.getInstance(); mMessagesDatabaseReference=mFirebaseDatabase.getReference().child("user").child(root).child(id); attachDatabaseReadListener();
Método de escucha
private void attachDatabaseReadListener() { if ( mChildEventListener == null) { mChildEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { User u = dataSnapshot.getValue(User.class); mUser=u.GetUser(); mEmail=u.GetEmailId(); Toast.makeText(getApplicationContext(),"here"+mUser,Toast.LENGTH_SHORT).show(); } public void onChildChanged(DataSnapshot dataSnapshot, String s) {} public void onChildRemoved(DataSnapshot dataSnapshot) {} public void onChildMoved(DataSnapshot dataSnapshot, String s) {} public void onCancelled(DatabaseError databaseError) {} }; mMessagesDatabaseReference.addChildEventListener( mChildEventListener); } }
Comprobación de la condición, puede ser cualquier cosa.
if(mUser==null&&mEmail==null) { //do something here } else { //do nothing }
Nota: se requiere un cierto tiempo para ejecutar en el niño agregado así que agrega el retraso apropiado Tengo solamente un nodo así que este código funcionó perfectamente para mí. Si cualquier otra solución o solución más fácil está disponible por favor hágamelo saber.
si el nodo raíz no existe entonces también mostrará null así que tenga esto en cuenta antes de implementar el nodo raíz push de la aplicación.
String myUsername="User"; if (root.child(myUsername).getRoot() == null) { } else { Map<String, Object> map = new HashMap<String, Object>(); map.put("user", ""); root.updateChildren(map);
hola mira esta https://firebase.google.com/docs/reference/js/firebase.database.DataSnapshot
// Test for the existence of certain keys within a DataSnapshot var ref = firebase.database().ref("users/ada"); ref.once("value") .then(function(snapshot) { var a = snapshot.exists(); // true var b = snapshot.child("name").exists(); // true var c = snapshot.child("name/first").exists(); // true var d = snapshot.child("name/middle").exists(); // false });
Creo que necesitas cambiar tu código para
String myUsername = userNameInputET.getText().toString(); if(mUsersRef.child(myUsername).getValue() == null) { //do stuff } else { //do other stuff }