🕌

Firestoreのcursor

2021/03/11に公開

ページングを実装する時のFirestoreのカーソルは、DocumentSnapShoptもしくはフィールドの値になると思いますが
フィールドにユニークな値がない時はDocumentSnapShotにならざるを得ない。

https://firebase.google.com/docs/firestore/query-data/query-cursors?hl=ja

個人的には document_id をキーにすれば話早いと思ってます。
API内で完結するならDocumentSnapShotのままで良いですが、他PFにわたすときは文字列とかにする必要が出てきます

なので他PFに渡すAPIの時は、毎回GetしてDocumentSnapShotを取得しています

if cursor != "" {
    var err error
    dsnp, err = r.fCli.Collection("xxxxx").Doc(cursor).Get(ctx)
    if !dsnp.Exists() {
        return []*Xxxxx{}, "", nil
    }
    if err != nil {
        return nil, "", err
    }
}

もっといい方法無いんだろうか… document_id をフィールドに含めれば解決しそうだけど冗長な気がする...

Discussion