LimitToLast()冻结团结

时间:2019-08-20 13:11:09

标签: firebase firebase-realtime-database

我是usig Unity 2018.3.0f2 Firebase 6.3

问题在于没有使用limitToLast(),下面的代码可以正常工作。我可以获得所有数据,即成千上万的数据。 但是我需要限制它,当我输入1或10或带有limittoLast或LimitToFirst(10)的任何数字时,团结无响应,在等待或停止运行Unit之后,CPU的运行开始更快,团结冻结,我必须停止从任务管理器统一并重新启动。那是一个错误还是我做错了什么?

 FirebaseDatabase.DefaultInstance
          .GetReference("users").OrderByChild("score").LimitToLast(100)
          .GetValueAsync().ContinueWith(task =>{ 
    if (task.IsFaulted)
              {
                 Debug.LogError("failed");
              }
    else if (task.IsCompleted)
              { Debug("success")} );

1 个答案:

答案 0 :(得分:0)

您正在调用GetValueAsync(),它将覆盖您的LimitToLast()子句,并获取“用户”引用中的所有数据。

此代码应使您更接近所需的内容:

DatabaseReference usersReference = FirebaseDatabase.DefaultInstance.GetReference("users");
Query query = usersReference.OrderByChild("score").LimitToLast(100);
query.ValueChanged += (object sender, ValueChangedEventArgs args) =>
{
    // this lambda will get called up to 100 times
    if (args.DatabaseError != null)
    {
        Debug.LogError(args.DatabaseError.Message);
        return;
    }
    Debug.Log(args.Snapshot.GetRawJsonValue());
};