有没有办法使用 pgpromse 查看限制偏移查询是否已到达末尾?

use*_*831 1 postgresql pg-promise

我有一个帖子表。我想以页面形式查询这些帖子。因为我想让我的端点保持无状态,所以我想使用偏移量和限制来做到这一点,如下所示:

SELECT * FROM post LIMIT 50 OFFSET $1 ORDER BY id
Run Code Online (Sandbox Code Playgroud)

其中 1 美元为页码乘以页面大小 (50)。检查是否已到达末尾的简单方法是查看是否返回了 50 页。当然,问题是页数是否能被 50 整除,我们无法确定。
到目前为止,我解决这个问题的方法是简单地每个查询获取 51 个帖子,页面大小仍然为 50。这样,如果返回查询小于 51,我们就到达了结尾。

不幸的是,这似乎是一种非常老套的方法。所以我想知道,pg-promise 或 postgresql 中是否有一些功能可以表明我已经到达表的末尾而无需诉诸这样的技巧?

Iva*_*anD 6

我发现的最简单且开销最低的方法:

您可以pageLimit+1在每个页面请求上请求行。在您的控制器中,您将检查是否rowsCount > pageLimit有更多数据可用。当然,在返回行之前,您需要删除最后一个元素并沿行发送类似hasNext布尔值的内容。

page+1对于数据库来说,检索额外的数据行通常比计算所有行或发出额外的请求来检查是否返回任何行要便宜得多。