Red social – Seguir la funcionalidad utilizando la base de datos firebase

Estoy construyendo una red social como Instagram. He trabajado en muchas redes sociales antes, usando mySQL. Soy nuevo en el servidor firebase.

Quiero buscar usuarios a través del nombre y quiero mostrar el siguiente / siguiente botón en la vista de lista. Pero estoy un poco confundido para ejecutar las consultas de firebased android en un formato estándar. No quiero ejecutar bucles innecesarios. A continuación se muestra mi estructura de base de datos para la tabla siguiente.

El nombre del nodo es follow y follower_id refiere al usuario que está siguiendo al usuario y al usuario que se sigue se refiere como followed_id .

Cómo escribir una consulta sencilla con android firebase para mostrar todos los usuarios con el nombre de inicio (por ejemplo, "an") y con el estado que ya lo estoy siguiendo o no.

FYI: No estoy usando firebase resto API.

Cómo escribir una consulta sencilla con android firebase para mostrar todos los usuarios con el nombre de inicio (por ejemplo, "an") y con el estado que ya lo estoy siguiendo o no.

Creo que no se puede hacer en una sola consulta.

Puede intentar hacerlo con consultas anidadas, algo así:

 ChildEventListener childEventListener = new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { // Retrieve the userId User user = dataSnapshot.getValue(User.class); ValueEventListener valueEventListener = new ValueEventListener() { @Override public void onDataChange(DataSnapshot usersFollowedDataSnapshot) { for ( DataSnapshot userFollowedDataSnapshot : usersFollowedDataSnapshot.getChildren() ) { // Retrieve the follower structure Follow follow = userFollowedDataSnapshot.getValue(Follow.class); if ( myUserId == follow.getFollowerId() ) { // This is a user that I'm following and which name starts with "am" } } } @Override public void onCancelled(DatabaseError databaseError) { } }; Query secondQuery = mFirebaseDatabaseReference.child("follow").orderByChild("followedId").equalTo(user.getId()); secondQuery.addListenerForSingleValueEvent(valueEventListener); } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) { } @Override public void onCancelled(DatabaseError databaseError) { } }; Query firstQuery = mFirebaseDatabaseReference.child("users").orderByChild("name").startAt("am").endAt("am\uf8ff"); firstQuery.addChildEventListener(childEventListener); 

Sé que no es muy sencillo y parece decepcionante. También podría ser lento, pero vale la pena intentarlo.

Como alternativa, debe considerar la estructura de su base de datos de una manera de simplificar las consultas de firebase. Vea más sobre las consultas de firebase por ejemplo aquí y aquí .

  • Firebase Cloud Messaging problema con suscribirse // cancelar la suscripción del tema
  • ¿Puedo hacer que Firebase utilice un proceso de inicio de sesión de nombre de usuario?
  • ¿Cómo estructurar los datos de la amistad con firebase?
  • Java.util.zip.ZipException: entrada duplicada con firebase
  • Obtención de 'E / TokenRequestor: Tiene configuraciones relacionadas con OAuth2 erróneas. Error detallado: INVALID_AUDIENCE 'incluso después de proporcionar identificaciones de cliente precisas
  • Base de datos de Firebase de Android: Recuperación de datos únicos sin detector de eventos
  • Firebase (FCM) cómo obtener el token
  • Cómo deshacerse de la advertencia de Android Studio "Resultado de getException () no lanzado"?
  • Pedido de datos con Firebase Android
  • ¿Es posible cargar datos de forma sincronizada desde Firebase?
  • ¿Necesito extender FirebaseInstanceIdService para suscribirme a los temas de FCM?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.