(新的Firebase Unity SDK)在查询上调用GetValueAsync不会在第一次调用时触发其Continu
本文关键字:调用 第一次 Continu GetValueAsync SDK Unity 新的 查询 Firebase | 更新日期: 2023-09-27 18:18:32
我正在使用新的Firebase Unity SDK在我的游戏中建立一个高分,但我在尝试更新我的高分列表时遇到了一些问题。这是我在尝试更新我的高分列表时运行的代码。
public void GetHighscore(Action<DataSnapshot> callback) {
highscoreRef.OrderByChild("total_score").LimitToLast(10).GetValueAsync().ContinueWith(task => {
if (task.IsFaulted) {
// Handle the error...
Debug.Log(task.Exception.Message);
}
else if (task.IsCompleted) {
callback(task.Result);
}
});
}
第一次调用GetHilicore时,它永远不会进入ContinueWith内部的lambda函数。然而,当我第二次调用它时,它将进入lambda函数并按预期工作。
我在这里做错了什么?
firebase here…
更新:我确实在这里看到了一个问题,我们将在下一个测试版中纠正。如果你有复杂的查询,没有任何索引设置,没有数据,有一个错误处理事件(然而,你最终会得到一个单一的事件,一旦你得到任何数据)。
在我们解决这个问题之前,您可以通过在目标路径下至少放置一些数据或添加索引(https://firebase.google.com/docs/database/security/indexing-data)来解决这个问题。我确信前者可以工作,但还没有验证后一个解决方案。我没有看到你所看到的。我会仔细检查你正在处理的情况,说结果可能是空或空在你的回调。我们的支持人员很擅长与您一起解决问题。
https://firebase.google.com/support/contact/troubleshooting/FirebaseDatabase.DefaultInstance.RootReference.OrderByChild("total_score").LimitToLast(10)
.GetValueAsync().ContinueWith(x => {
if (x.Result == null) {
Debug.Log("null!");
} else if (!x.Result.HasChildren) {
Debug.Log("no children!");
} else {
foreach (var child in x.Result.Children) {
Debug.Log(child.ToString());
}
}
});