Database 提供一个;下一个ID“;来自Postgres的分页API响应中的属性

Database 提供一个;下一个ID“;来自Postgres的分页API响应中的属性,database,postgresql,pagination,Database,Postgresql,Pagination,我有以下表格结构: CREATE TABLE "public"."things" ( "id" int4 NOT NULL DEFAULT nextval('things_id_seq'::regclass), "externalId" varchar(1000) NOT NULL, "createdAt" timestamp NOT NULL DEFAULT CURREN

我有以下表格结构:

CREATE TABLE "public"."things" (
    "id" int4 NOT NULL DEFAULT nextval('things_id_seq'::regclass),
    "externalId" varchar(1000) NOT NULL,
    "createdAt" timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
    "description" varchar(1000),
    PRIMARY KEY ("id")
);
externalId
是一个GUID,因此它永远递增且唯一)

我接受以下API请求参数来查询此表:
lastSeenID

其思想是API响应是:

{
    items: [Things],
    total: 50
}
如果API请求包含
lastSeenID
,这将是
items
数组中最后一个项的
externalId
,因此我使用它来查询我的表,如下所示:

SELECT*FROM“things”,其中“externalId”>'XYZ'LIMIT 7
-这将获取API响应中的
items
属性,并获取
总计
选择COUNT(1)作为“things”LIMIT 1的“COUNT”

我的问题是:如果客户端不跟踪
items.length
并每次将其与
total
属性进行比较,那么向客户端表明没有更多记录可获取的最佳方式是什么。最好在响应中传回一个
nextIdAvailable
,如果他们已经到达该查询的分页末尾,则将其设置为
null
。这个查询看起来像什么