【问题标题】:Firebase StartAt() doesn't work - it returns the same results without itFirebase StartAt() 不起作用 - 没有它它返回相同的结果
【发布时间】:2020-05-28 04:17:02
【问题描述】:

我正在尝试获得前 5 个结果 (1-5),然后是 (6-10)... 等等。 我保存我收到的最后一个值,以便在我停止的地方开始, 但是当我检查新值时,它仍然显示值 1-5 而不是 6-10。

另外,当我的键已经在 DB 上排序时,我不明白是否真的必须使用 orderByChild。

我的数据库-

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

前 1-5 名:

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

效果很好。 现在我试图让用户 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);
  }

输出: 用户1 用户2 用户3 用户4 用户5 如果我的代码显示 StartAt("user5"),为什么它从 user1 开始?我错过了什么?

【问题讨论】:

  • 你应该使用 OrderByKey.StartAt('userId')
  • 是的。把它写成答案
  • 我将其添加为答案。请将其标记为已接受。谢谢。 :-)

标签: firebase firebase-realtime-database


【解决方案1】:

根据您的评论,这是我的(非常简短的)答案:

您应该使用OrderByKey.StartAt('userId') 而不是OrderByValue

很高兴我能帮上忙。

【讨论】:

    猜你喜欢
    • 2013-09-05
    • 1970-01-01
    • 2021-09-17
    • 2022-11-01
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多