walinejs / waline

💬 A Simple, Safe Comment System
https://waline.js.org/en/
GNU General Public License v2.0
2.19k stars 380 forks source link

[BUG]CloudBase上Waline对同一页面最多只返回100条评论数据 #203

Closed asforest closed 3 years ago

asforest commented 3 years ago

问题描述 | Describe the bug Waline对同一页面(指url参数相同时)最多只会返回100条评论数据

我将别的评论系统的数据导入到了CloudBase上的Waline,一共大约160条评论,导入过程一切顺利,但是服务端返回的数据中,评论数量总是返回100,而且返回的评论的页数也对不上。

totalPages返回的值是5,而pageSize是10。5*10也不等于100,我查阅了文档,好像也没有相关的配置选项

QQ截图20210416233319

这是Waline后台的数据,可以确定的确是成功导入了161条数据

image

问题网站 | Website URL https://hello-cloudbase-9gyv4rta0bd17d6a-1254063044.ap-shanghai.app.tcloudbase.com

部署方式 | Deploy Type

lizheming commented 3 years ago

这个和 CloudBase 和 LeanCloud 的限制有关,这两个的数据库一次性只支持返回最大100条的数据。而在获取评论数据的时候,为了节省一次数据库操作(能节省数据库读取的额度),我会将当前文章的所有评论数据读取出来,通过判断数组长度返回评论数。所以这两个结合了一下就产生了这个问题了,可能后续需要优化一下。

asforest commented 3 years ago

这个主要还是CloudBase的锅,限制老多了,也许后面可以从需要地方开始读取数据库

lizheming commented 3 years ago

嗯,我后续想一下怎么优化吧,可以考虑当返回条数 >= 100 的时候我再增加单独请求一下评论条数的操作。

Mister-Hope commented 3 years ago

虽然没用过cloudbase,但是看描述这不是跟小程序的云开发是一样的么?可以在云函数里先读总长度然后分次读取一并返回。原理大概是如果返回了100条再查询一下数据一共有多少条?超过一百继续读之类的?

lizheming commented 3 years ago

@Mister-Hope 没有看到你的评论。实际上之前是这么实现的,但是这样就会有两次 http 请求。我为了优化所以总数是拿到数据自己计算的,这个在大部分情况下应该是好用的,能少好几次请求。