如何使用firebase startAt方法" value"和"关键"在REST请求中?

时间:2017-08-27 22:13:12

标签: rest firebase firebase-realtime-database pagination

在web使用firebase时,我可以使用" value"和"关键"对于" startAt"方法,如下所示:

https://stackoverflow.com/a/38024909/3466502

并在此处记录:

https://firebase.google.com/docs/reference/js/firebase.database.Reference?hl=pt-br#startAt

但我需要在REST消费中使用此功能,而且我没有找到任何参考我应该如何做到这一点。

有谁知道怎么做?

我正在使用Firebase推荐的PHP软件包,但在他们的文档中,我无法获得有关如何执行此操作的信息...... :(

我有这样的数据结构:

"list": {
    "-KsaZNyjd91tEAKjDffA": {"name": "a", "age" => 20},
    "-KsaZNynhTFuDBLpdmKv": {"name": "b", "age" => 21},
    "-KsaZNyoAoYAfHl-f6KF": {"name": "b", "age" => 22},
    "-KsaZiL4HJcoCYksHBEn": {"name": "b", "age" => 23},
    ...
}

我需要动态地每页返回两个项目。在JavaScript中很容易这样做:

var list = firebase.database().ref("list").orderByChild("name").limitToFirst(2);

var page_1 = $firebaseArray(list);
var page_2 = $firebaseArray(list.startAt('b', '-KsaZNyoAoYAfHl-f6KF'));

使用REST我创建了以下代码:

$list = $db->getReference('list')->orderByChild('name')->limitToFirst(2);

$page_1 = $list->getValue();
$page_2 = $list->startAt('b', '-KsaZNyoAoYAfHl-f6KF')->getValue();
//                                      /
// "key" does not work in this method--/

但是" startAt"包的方法不允许我确定"键"作为第二个参数,因此第二页的内容不是预期的。

第1页

{"name": "a", "age" => 20},
{"name": "b", "age" => 21}

第2页

{"name": "b", "age" => 21}, // <--- This is the last one on page one
{"name": "b", "age" => 22}  // <--- This should be the first on page 2

我查看了PHP包方法,并没有真正实现&#34; key&#34;的任何内容。 https://firebase-php.readthedocs.io/en/latest/realtime-database.html#startat

public function startAt($value): Query
    {
        return $this->withAddedFilter(new Filter\StartAt($value));
    }

所以我查看了REST请求的firebase文档,但是我也无法确定哪个参数应该指定&#34; key&#34;我的查询。 https://firebase.google.com/docs/database/rest/retrieve-data#consultas-de-intervalo

1 个答案:

答案 0 :(得分:0)

如果查看code for startAt,看起来PHP库没有实现第二个参数。

您最好的办法是提交issue on the Github repo要求支持startAt()(和endAt())的第二个参数,或者自行更改代码并提交拉取请求。