Google Datastore Pagination - PullRequest
       9

Google Datastore Pagination

0 голосов
/ 11 декабря 2018

Я пытаюсь использовать курсор для реализации разбиения на страницы, но когда я пытаюсь использовать endCursor, который возвращается после моего первого запроса (запрашивает 10 записей), он выдает мне ошибку «недопустимая кодировка».Кстати у меня всего 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 запросов, но когда я попытался выполнить запрос в четвертый раз, он выдает ошибку «Неверное кодирование»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...