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.
- Autenticación de la API de Android Firebase Rest
- Cómo recuperar un objeto List de la base de firebase en android
- Eventos personalizados en la consola de análisis de Firebase
- Cómo reordenar los datos de la base de datos en tiempo real firebase
- Android - Firebase Offline Mejores Prácticas
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.
- Dificultades para configurar Gradle para enviar archivos de mapeo de ProGuard a Firebase
- ¿Es necesario inicializar Firebase Analytics en cada actividad?
- Firebase Crash Library - NullPointerException en la consola
- Firebase FCM force onTokenRefresh () para ser llamado
- Cómo crear una consulta de unión en Firebase Android
- La aplicación de Android se bloquea al conectarse a Firebase
- Cambio del nombre del paquete Firebase
- Combinación de escuchas de datos en tiempo real Firebase con RxJava
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í .
- ¿Cómo saber el recuento de actividades de mi aplicación?
- MediaPlayer seekTo reproduce canciones de manera incoherente desde el principio