es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener datos de la lista por condición en Firebase Realtime Database

Tengo 1 pregunta, parece estar sin resolver. Permítanme reformularla. Estoy aprendiendo sobre la Base de Datos en Tiempo Real en Xamarin. He investigado en la documentación y he podido publicar los datos exitosamente. Mi estructura de datos es la siguiente:

Imagen

Así es cómo muestro la lista de datos en tiempo real:

ListChat.xaml.cs

“`C#
public ObservableCollection<mydatabaserecord> DatabaseItems { get; set; } = new ObservableCollection<mydatabaserecord>();
public static string FirebaseClient = "xxxxxx";
public static string FrebaseSecret = "xxxxxxxxxxxx";
public FirebaseClient fc = new FirebaseClient(FirebaseClient,
new FirebaseOptions { AuthTokenAsyncFactory = () => Task.FromResult(FrebaseSecret) });

protected void LoadListChat()
{
BindingContext = this;
string userid = "001";

<pre><code>var FirebaseClient = fc
.Child("RecordsChat")
.AsObservable<mydatabaserecord>()
.Subscribe((dbevent) =>
{
if (dbevent.Object != null)
{
DatabaseItems.Add(dbevent.Object);
}
});
</code></pre>

}

<pre><code><br />**DetailChat.xaml.cs**

“`C#
private void send_messenger_Tapped(object sender, EventArgs e)
{
string user1 = “001”;//Por ejemplo
string user2 = “002”;//Por ejemplo

var roomName = “room_” + user1 + ‘_’ + user2;

fc.Child(“RecordsChat”).Child(roomName).PostAsync(new MyDatabaseRecord
{
NameUser = lb_nameuser.Text,
Content = txt_messenger.Text,
UID = user1,
ViewUser = false,
RoomID = roomName
});

txt_messenger.Text = “”;
}

Sin embargo, como se muestra en mi estructura de datos anterior, ¿cómo puedo obtener una lista de datos por room_, siempre y cuando RoomID = userid?

Sé que esto puede no ser un problema nuevo. Sin embargo, he intentado de todo y aún no funciona. ¿Alguna ayuda por favor? Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El usuario está tratando de obtener una lista de datos de Firebase Realtime Database en Xamarin, basado en una condición específica. Tienen una estructura de datos que incluye un campo RoomID y necesitan recuperar todos los datos donde RoomID sea igual a un valor determinado, en este caso userid.

    Una posible solución es utilizar los métodos OrderByChild y EqualTo en FirebaseClient para filtrar los datos basados en RoomID. Aquí hay un ejemplo de cómo recuperar los datos:

    var FirebaseClient = fc
       .Child("RecordsChat")
       .OrderByChild("RoomID")
       .EqualTo(userid)
       .AsObservable<mydatabaserecord>()
       .Subscribe((dbevent) =>
       {
           if (dbevent.Object != null)
           {                        
               DatabaseItems.Add(dbevent.Object);
           }
       });
    

    En este código, estamos ordenando los registros basados en el campo RoomID y luego los filtramos para incluir solo los registros donde RoomID sea igual a userid. Esto debería proporcionarnos una lista de registros que cumplan con la condición dada.

    Ten en cuenta que este código reemplaza el método existente LoadListChat() en el archivo ListChat.xaml.cs. El código en DetailChat.xaml.cs permanece igual.

    ¡Espero que esto sea de ayuda! Hazme saber si tienes alguna otra pregunta.

Comments are closed.