(新的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 Unity SDK)在查询上调用GetValueAsync不会在第一次调用时触发其Continu

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());
      }
    }
  });