首页 > 解决方案 > 时间流分页不适用于nodejs

问题描述

从我的 NodeJS 环境中查询 Timestream DB 时,我遇到了一些问题。我收到一个空数组来响应所有响应较大的查询当我使用控制台时,完全相同的查询正在工作。所以我确信查询语法和格式是正确的。文档说当响应大于 1 MB 时使用分页。所以我应该收到带有 nextPageToken 的分页响应,但我得到的是 []。

我注意到 MaxRows 参数不起作用的另一件事。所以有一个查询返回 84 行。当我通过 MaxRows = 83 或小于该值的任何值时,我收到空数组作为响应,当我通过 MaxRows = 84 或更多值时,我收到实际响应。

基于这些观察,我认为分页不起作用。关于如何解决这个问题的任何想法?

标签: javascriptnode.jsamazon-web-servicespaginationamazon-timestream

解决方案


似乎任何导致分页的查询都会在初始响应中返回一组空的结果(行)。要获取第一页结果,请通过第一个查询响应中的 NextToken 字符串进行后续查询。然后同样对于您的第二页结果,通过第二个查询响应中的 NextToken 字符串进行后续查询。

这将类似于以下内容:

const client = new TimestreamQueryClient(...);
const queryString = 'select * from "db"."table"';
const result = await client.send(
    new TimestreamQueryCommand({
        QueryString: queryString,
    })
);
// result.Rows is an empty array

const firstPage = await client.send(
    new TimestreamQueryCommand({
        QueryString: queryString,
        NextToken: result.NextToken,
    })
);
// firstPage.Rows contains the first page of results

const secondPage = await client.send(
    new TimestreamQueryCommand({
        QueryString: queryString,
        NextToken: firstPage.NextToken,
    })
);
// secondPage.Rows contains the second page of results

推荐阅读