Невозможно получить записи из Firebase в Xamarin c # - PullRequest
0 голосов
/ 11 мая 2019

В моем приложении я подключился к Firebase и пытаюсь заполнить список, но в начале я не вижу заполненных записей.Это просто показывает пустую страницу без всего заполненного в представлениях списка.

Это мой firebasehelper.cs

{
class FirebaseHelper
{
    FirebaseClient firebase = new FirebaseClient("https://mylimo-b2029.firebaseio.com/");


    public async Task<List<users>> GetAllUsers()
    {

        try
        {
          return (await firebase
         .Child("Users")
         .OnceAsync<users>()).Select(item => new users
         {
             //,

             first_name = item.Object.first_name,
             last_name = item.Object.last_name,
             password = item.Object.password,
             user_id = item.Object.user_id,
         }).ToList();
        }
        catch (Exception ex)
        {
            throw new Exception("GetUsers  Additional information..." + ex, ex);
        }
    }    


    public async Task<users> GetUsers(string usr_id)
    {
        try
        {
            var allUsers = await GetAllUsers();
            await firebase
              .Child("users")
              .OnceAsync<users>();
            return allUsers.Where(a => a.user_id == usr_id).FirstOrDefault();
        }


        catch (Exception ex)
        {
            throw new Exception("GetUsers  Additional information..." + ex, ex);
        }
    }
}

Ниже приведен файл MainPage.xaml.cs

 public partial class MainPage : ContentPage
{
    FirebaseHelper firebaseHelper = new FirebaseHelper();
    public MainPage()
    {
        try
        {
            InitializeComponent();
        }
        catch (Exception ex)
        {
            throw new Exception("InitializeComponent  Additional information..." + ex, ex);
        }
    }

    protected async override void OnAppearing()
    {
        try
        {
            base.OnAppearing();
            var allUsers = await firebaseHelper.GetAllUsers();
            lstPersons.ItemsSource = allUsers;
        }

        catch (Exception ex)
        {
            throw new Exception("OnAppearing  Additional information..." + ex, ex);
        }




    }

В начале приложения оно просто покажет пустой элемент управления представлением списка без каких-либо записей,

.

Моя база данных Firebase такая же, как показано ниже] 1

1 Ответ

0 голосов
/ 13 мая 2019

Ваш код нормальный. Но ваш может быть меньше некоторых шагов

Пожалуйста, обратитесь к следующим способам использования базы данных Firebase.

Прежде всего, пожалуйста, откройте консоль базы данных Firebase, установите для правила чтения / записи значение null, как на следующем скриншоте.enter image description here

Затем создайте модуль user.

public class User
{
    public string first_name { get; set; }
    public string last_name { get; set; }

    public string password { get; set; }

    public int userid { get; set; }
}

Вот мой firebasehelper.

   public class Firebasehelper
{
    FirebaseClient firebase;
    public Firebasehelper()
    {
        firebase = new FirebaseClient("https://fir-databasedemo-62a72.firebaseio.com/");

    }

    public async Task AddUser(int userid, string first_name, string last_name, string password)
    {

        await firebase
          .Child("Users")
          .PostAsync(new User() { userid = userid, first_name = first_name, last_name= last_name, password= password });
    }
    public async Task<List<User>> GetAllUsers()
    {

        return (await firebase
          .Child("Users")
          .OnceAsync<User>()).Select(item => new User
          {

              userid = item.Object.userid,
              first_name = item.Object.first_name,
              last_name = item.Object.last_name,
              password = item.Object.password
          }).ToList();
    }
}

Пожалуйста, не создавайтеЗаписи в FireBase напрямую.Мы должны добавить эти записи по коду.После успешного добавления этих записей вы можете увидеть эти записи в консоли Firebase.

enter image description here

Использовать со следующим кодом.

  private async void BtnAdd_Clicked(object sender, EventArgs e)
    {
        // AddUser(int userid, string first_name, string last_name, string password)
        await firebaseHelper.AddUser(Convert.ToInt32(1), "Jon","hard","123.com");
        await firebaseHelper.AddUser(Convert.ToInt32(1), "Leon", "esay", "1234.com");
        await firebaseHelper.AddUser(Convert.ToInt32(1), "Rebecca", "middlue", "12345.com");
        await DisplayAlert("Success", "Person Added Successfully", "OK");
       var allPersons = await firebaseHelper.GetAllUsers();
       lstPersons.ItemsSource = allPersons;
    }

Вот мой MainPage.xaml.

 <ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:local="clr-namespace:RetireveRecordDemo"
         x:Class="RetireveRecordDemo.MainPage">
  <StackLayout>
    <Button x:Name="BtnAdd" Text="add" />

    <ListView x:Name="lstPersons">
        <ListView.ItemTemplate>
            <DataTemplate>
                <ViewCell>
                    <StackLayout>

                        <Label Text="{Binding first_name}"  > 
                 </Label>
                        <Label Text="{Binding last_name}" > 
                 </Label>

                    </StackLayout>
                </ViewCell>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>
</StackLayout>
</ContentPage>

MainPage.xml.cs

   public partial class MainPage : ContentPage
{
    Firebasehelper firebaseHelper;
    public MainPage()
    {
        InitializeComponent();
        firebaseHelper = new Firebasehelper();

        BtnAdd.Clicked += BtnAdd_Clicked;
    }

    private async void BtnAdd_Clicked(object sender, EventArgs e)
    {
        // AddUser(int userid, string first_name, string last_name, string password)
        await firebaseHelper.AddUser(Convert.ToInt32(1), "Jon","hard","123.com");
        await firebaseHelper.AddUser(Convert.ToInt32(1), "Leon", "esay", "1234.com");
        await firebaseHelper.AddUser(Convert.ToInt32(1), "Rebecca", "middlue", "12345.com");
        await DisplayAlert("Success", "Person Added Successfully", "OK");
       var allPersons = await firebaseHelper.GetAllUsers();
       lstPersons.ItemsSource = allPersons;
    }

    protected async override void OnAppearing()
    {

        base.OnAppearing();


        try
        {
            base.OnAppearing();
            var allUsers = await firebaseHelper.GetAllUsers();
            lstPersons.ItemsSource = allUsers;
        }

        catch (Exception ex)
        {
            throw new Exception("OnAppearing  Additional information..." + ex, ex);
        }
    }
}

Есть запущенный скриншот.

enter image description here

Вот мое демо.https://github.com/851265601/RetireveRecordDemo

В базе данных Firebase есть полезная статья для CRUD.https://www.c -sharpcorner.com / статьи / Xamarin-формы работоспособный-с firebase-Realtime-БД-CRUD-операции /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...