簡體   English   中英

如何在REST請求中將Firebase startAt方法與“值”和“鍵”一起使用?

[英]How use firebase startAt method with “value” and “key” in REST request?

在Firebase的Web使用中,我可以將“ value”和“ key”用於“ 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封裝方法,但該方法實際上並未為“鍵”實現任何東西。 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文檔,但是我也無法確定應該為查詢指定“鍵”的參數。 https://firebase.google.com/docs/database/rest/retrieve-data#consultas-de-intervalo

如果您查看startAt代碼 ,則該PHP庫似乎未實現第二個參數。

最好的選擇是在Github存儲庫上提交問題,要求支持第二個參數startAt() (和endAt() ),或者自己更改代碼並提交請求請求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM