0

好的,所以我在 Visual Studio 中构建 xamarin.android 应用程序,有很多这类问题,但我真的没有找到任何关于 xamarin.android 的东西,一切都是基于 Java 的。我尝试按照这些教程和答案进行操作,但在 Xamarin android 上总是缺少某些东西或无法正常工作。

我已经进行了身份验证,效果很好,没有问题。我尝试将用户信息(用户在注册时输入的信息)存储到数据库中。它有点工作,但有一个问题。这是代码:

  public void OnComplete(Task task)
    {
        if (task.IsSuccessful)
        {
            Toast.MakeText(this, "Successful", ToastLength.Long).Show();

            FirebaseUser user = FirebaseAuth.GetInstance(app).CurrentUser;
            id = user.Uid;
            CreateUser();

            buttonSignIn.PerformClick();
            progressBar.Visibility = ViewStates.Invisible;
        }
        else
        {
     //something
        }
    }

这是CreateUser()方法:

  private void CreateUser ()
    {
        Account user = new Account();
        user.uid = id;
        user.name = signup_inputName;
        user.lastName = signup_inputLastName;
        user.email = signup_inputEmail;
        user.phone = signup_inputPhoneNumber;

        var firebase = new FirebaseClient(FirebaseURL);
        var item = firebase.Child("users").PostAsync<Account>(user);

    }

这是帐户类代码:

public class Account
{
    public string uid      { get; set; }
    public string name     { get; set; }
    public string lastName { get; set; }
    public string email    { get; set; }
    public string phone    { get; set; }

}

此代码将用户信息存储"users"在数据库中的节点下。但是下面还有一个"user"带有一些随机值的节点,下面是有关用户的信息(包括uid)。这是输出:

- Users   
      -LBGFtYFTfD3l1hmwHVn
          email:  "testuser@test.com"
          lastName:"peric"
          name:  "pero"
          phone: "12321"
          uid: "18puc5CzSZfzbdflzekzNCHGHR62"

"users"所以,我的问题是,节点下面的这个随机值不应该是uid吗?如果是,如何设置它?我试过这个:

Account user = new Account();
            user.uid = id;
            user.name = signup_inputName;
            user.lastName = signup_inputLastName;
            user.email = signup_inputEmail;
            user.phone = signup_inputPhoneNumber;

    DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users").Child(uid).SetValue(user)

但这没有用,我收到了这个错误:

Firebase No properties to serialize found on class

即使我在用户类中设置了公共 getter 和 setter。

我需要获取该用户信息并将其显示在我的应用程序的某些位置,但我无法让它工作。这是我第一次使用 Firebase,我已经习惯了 SQL 数据库,所以这让我很困惑。此外,关于 xamarin.android 和 firebase 的在线信息很少,而且我实际上是一般编程的新手。任何帮助将不胜感激。这是我在切换到 SQL 在线数据库之前的最后一次尝试。

4

1 回答 1

1

当您调用PostAsync客户端时,会在您调用它的位置下创建一个新的子节点。这类似于 HTTPPOST动词,以及push()大多数其他 Firebase SDK 中的方法。

要将数据写入您确切指定的位置,请使用PutAsync

var item = firebase.Child("users").Child(uid).PutAsync<Account>(user);

请参阅Firebase.Xamarin 自述文件中的示例

于 2018-05-02T13:17:48.900 回答