2017-08-07 164 views
1

我是firebase的新手,对Unity来说有点新鲜(另外,这是我的第一个堆栈交换帖子)。我知道如何写入firebase,但我不知道如何从数据树中检索。统一 - 从Firebase数据库中检索数据

我的数据结构化的方式(大致)如下:

{ 
Users:{ 
    "Email": , 
    "Password": 
    } 
} 

我怎么会进入我的用户的内容和检索这样的事情作为自己的电子邮件地址和密码?

+0

这应该很好地解释它:https://firebase.google.com/docs/database/unity/retrieve-data#retrieving_data。只需将'Leaders'替换为节点的名称即可。 –

+0

您好弗兰克。我仍然有点困惑。我将如何遍历我创建的密钥并访问所述密钥的电子邮件和密码元素? –

回答

0

通过创造性复制/从documentation page粘贴我得到这个:

FirebaseDatabase.DefaultInstance 
    .GetReference("Users") 
    .ValueChanged += HandleValueChanged; 
} 

void HandleValueChanged(object sender, ValueChangedEventArgs args) { 
    if (args.DatabaseError != null) { 
    Debug.LogError(args.DatabaseError.Message); 
    return; 
    } 
    Debug.Log(arg.Snapshot.Child("Email").Value) 
} 
+0

这将允许我遍历数据库并检查用户?当我把它放在我的代码中时,它显示的是我的控制台窗口中对我的数据库所做更改的字典。 –

+0

你只写一个sucker到数据库,所以这段代码显示那个用户。编写用户列表涉及调用'Push()',如下所示:https://firebase.google.com/docs/database/unity/save-data#append_to_a_list_of_data –

+0

是的,我有。我有什么麻烦的理解是这样的:我有一个数据库与多组数据,我想遍历该数据并检查该数据中的用户帐户。上面给出的代码示例显示了添加新数据时所做的更改。谷歌文档并没有给我一个很好的理解,我可以遍历我的数据列表,并比较我的电子邮件条目。 –

1

我在同一条船上,你(新双方火力点和统一),但类似下面的工作对我来说。我在没有测试的情况下将其适用于您的场景,因此可能会出现一些小错误,但应该让您开始。也许更有经验的人可以改进它。我故意避免正确处理密码的细节。

//assuming 
     public class User { 


      public string email; 
      public string password; 

      public User (string email, string password) { 
       this.email = email; 
       this.password = password; 
      } 
     } 

    //inside some class 
     public void AddUser(){ 
      User user = new User("[email protected]", "password"); 
      string json = JsonUtility.ToJson(user); 
      Firebase.Database.DatabaseReference dbRef = Firebase.Database.FirebaseDatabase.DefaultInstance.RootReference 
      dbRef.Child("users").Push().SetRawJsonValueAsync(json); 
     } 

     public void GetUsers(){ 
      Firebase.Database.FirebaseDatabase dbInstance = Firebase.Database.FirebaseDatabase.DefaultInstance; 
      dbInstance.GetReference("users").GetValueAsync().ContinueWith(task => { 
        if (task.IsFaulted) { 
         // Handle the error... 
        } 
        else if (task.IsCompleted) { 
         DataSnapshot snapshot = task.Result; 
         foreach (DataSnapshot user in snapshot.Children){ 
         IDictionary dictUser = (IDictionary)user.Value; 
         Debug.Log ("" + dictUser["email"] + " - " + dictUser["password"]); 
         } 
        } 
      });