谁能解释为什么这段代码永远不会成为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给我任何可读的东西。
非常感谢任何有关此事的帮助!
void GetLevelSnapshot()
{
FirebaseDatabase.DefaultInstance.GetReference("levels").GetValueAsync().ContinueWith(task => {
if (task.IsFaulted)
{
// Handle the error...
}
else if (task.IsCompleted)
{
DataSnapshot levelSnapshot = task.Result;
foreach(var rules in levelSnapshot.Children) // rules
{
Debug.LogFormat("Key = {0}", rules.Key); // "Key = rules"
foreach(var levels in rules.Children) //levels
{
Debug.LogFormat("Key = {0}", levels.Key); //"Key = levelNumber"
foreach(var levelNumber in levels.Child) // levelNumber
{
//Debug.Log("BEGIN");
Debug.LogFormat("Key = {0}, Value = {0}", levelNumber.Key, levelNumber.Value.ToString()); //"oneStarTime" : 0,"twoStarTime" : 30,"threeStarTime" : 45
//Debug.Log("END");
} // levelNumbers
} // levels
} //rules
}
});
}
如果您需要更多解释,我希望这会有所帮助,请不要犹豫,发表评论。我实际上没有时间测试它,但我最近一直在与unity3d和firebase进行广泛的合作。我也删除了OrderByChild()似乎你想要获得级别,以便不确定这是否会影响输出,所以你可以尝试使用或不使用它。如果有效,请告诉我。