简体   繁体   English

Firebase StartAt() 不起作用 - 没有它它返回相同的结果

[英]Firebase StartAt() doesn't work - it returns the same results without it

I'm trying to get the first 5 results (1-5), and then (6-10)... and so on.我试图获得前 5 个结果 (1-5),然后是 (6-10)...等等。 I save the last value I received, in order to StartAt where I stopped, but when I check the new values it still shows values 1-5 and not 6-10.我保存了我收到的最后一个值,以便 StartAt 我停止的地方,但是当我检查新值时它仍然显示值 1-5 而不是 6-10。

Also, I don't understand if I really have to use orderByChild while my keys are already sorted on DB.另外,我不明白当我的键已经在数据库上排序时我是否真的必须使用 orderByChild。

My DB-我的数据库-

users
    +user1
    +user2
    +user3
    +user4
    +user5
    +user6
    .....
    +user50

First 1-5:前 1-5:

  task = await FirebaseDatabase.DefaultInstance.GetReference("users").OrderByValue().LimitToFirst(5).GetValueAsync().ContinueWith(t => t);

That works fine.那很好用。 Now I'm trying to get users 6-10现在我试图让用户 6-10

  lastUserId= "user5"
  task=null;
  task = await FirebaseDatabase.DefaultInstance.GetReference("users").OrderByValue().StartAt(lastUserId).LimitToFirst(5).GetValueAsync().ContinueWith(t => t);
  DataSnapshot dts = task.Result;
  foreach (DataSnapshot s in dts.Children)
  {
  Debug.Log(s.Key);
  }

output: user1 user2 user3 user4 user5 Why does it start from user1 if my code says StartAt("user5")?? output: user1 user2 user3 user4 user5 如果我的代码说 StartAt("user5") 为什么它从 user1 开始? What am I missing?我错过了什么?

As per your comment, here is my (very short) answer:根据您的评论,这是我的(非常简短的)回答:

You should use OrderByKey.StartAt('userId') rather than OrderByValue .您应该使用OrderByKey.StartAt('userId')而不是OrderByValue

Glad I could help.很高兴我能帮助你。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM