繁体   English   中英

谷歌数据存储分页

[英]Google Datastore Pagination

我正在尝试使用游标来实现分页,但是当我尝试使用在我的第一个查询(查询 10 条记录)之后返回的 endCursor 时,它给我一个错误“无效编码”。 顺便说一下,我总共有 16 条记录。 我期待在我的下一个查询中,它会给我最后 6 条记录

这是我的代码:

    router.get("/scan/history/query", async (req: Request, resp: Response) => {
        const userId = resp.locals.user && resp.locals.user.sub
        const pageCursor = req.query.cursor
        if (userId) {

            let mainQuery = dataStoreClient.createQuery(process.env.GOOGLE_DATASTORE_KIND_SCAN_RESULTS)
                .filter("userId", QUERY_FILTER_OPERATORS.EQUAL, userId)
                .filter("isDeletedDocument", QUERY_FILTER_OPERATORS.EQUAL, false)
                .select(["__key__", "scanDate", "scanKeyword", "scanFilter",
                    "hasRecord", "scanThreatStatus", "scanDuration",
                    "scanType", "scanStatus", "domainName"])
                .order("scanDate", { descending: true })
                .limit(10)
            if (pageCursor) {
                mainQuery = mainQuery.start(pageCursor)
            }
            const results = await mainQuery.run()
            const entities = results[0]
            const info = results[1]
            const hasNextPage = info.moreResults !== "NO_MORE_RESULTS"
            const pageResult = new PageResult(entities, info.endCursor, hasNextPage)
            return HttpResult.Ok(resp, pageResult)
        }
        return HttpResult.UriNotFound(resp)
    })

更新:我尝试了数千条记录,但我的限制仍然是 10。它非常适合 2 或 3 个查询,但是当我第四次尝试查询时,它抛出一个错误“无效编码”

我知道这已经过时了,但如果其他人遇到这个问题(就像我刚刚遇到的那样),我可以通过使用encodeURIComponent()对光标值进行编码来解决它。 看起来游标值偶尔包含一个+字符,这会在 URL 中未转义时导致问题

暂无
暂无

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

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