任何人都可以解释为什么这段代码永远不会成为Debug.Log(“END”);调用
我正在尝试弄清楚如何在Unity中使用DataSnapshot for Firebase,但在使用数据快照时,文档几乎毫无价值。我能够获得快照,但使用它非常复杂。
我想对数据库进行一次调用,并获取参考“级别”下所有内容的快照
数据库规则如下:
"rules": {
"levels" : {
"levelNumber" : {
"oneStarTime" : 0,
"twoStarTime" : 30,
"threeStarTime" : 45
}
},
"users" : .....
这是我的方法:
void GetLevelSnapshot()
{
FirebaseDatabase.DefaultInstance.GetReference("levels").OrderByChild("levelNumber").GetValueAsync().ContinueWith(task => {
if (task.IsFaulted)
{
// Handle the error...
}
else if (task.IsCompleted)
{
levelSnapshot = task.Result;
foreach(var childSnapshot in levelSnapshot.Children)
{
Debug.Log("BEGIN");
//Debug.Log(childSnapshot.Key);
LevelList.Add(childSnapshot.Key);
Debug.Log("END");
}
}
});
}
最后,我正在寻找一种方法来基本上遍历指定级别的快照并拉动所有孩子。但是,在这一点上,我无法获得childSnapshot.Value给我任何可读的东西。
非常感谢任何有关此事的帮助!
答案 0 :(得分:0)
执行以下步骤:
User
类:
public class User
{
public string name;
public string[] items;
public string email;
public string ToString()
{
return name + ", " + email + ", " + items.ToString();
}
}
从Firebase实时数据库读取数据:
FirebaseDatabase.DefaultInstance.RootReference.Child("users").Child("FIREBASE_UID_HERE").GetValueAsync().ContinueWith(t =>
{
if (t.IsCanceled)
{
Debug.Log("FirebaseDatabaseError: IsCanceled: " + t.Exception);
return;
}
if(t.IsFaulted)
{
Debug.Log("FirebaseDatabaseError: IsFaulted:" + t.Exception);
return;
}
DataSnapshot snapshot = t.Result;
User user = JsonUtility.FromJson<User>(snapshot.GetRawJsonValue());
Debug.Log(user.ToString());
});