0

我正在使用RESTHEART访问服务(API)并使用 NoSQL 数据库 mongoDB。所以在 MongoDb 中,我有 9000 条记录。如果我通过RESTHEART调用,那么它最多只返回一千。所以在一次打击中,我得到的记录少于 10001 条。如果我想检索所有记录,那么我必须再打一个电话。

我附上了restheart和MongoDb的一个流程
在此处输入图像描述

所以基于restheart我正在实现角度数据表。

 <table datatable dt-options="datatables.standardOptions" dt-columns="datatables.standardColumns" class="table table-striped table-bordered table-hover" width="100%">
                <thead>
                  <tr>
                    <th>Id</th>
                    <th>Message</th>
                    <th>Exception Cause </th>               
                  </tr>
                </thead>

JS

  this.standardOptions = DTOptionsBuilder;
  this.standardOptions = DTOptionsBuilder
     .fromFnPromise(('api/tables/datatables.standard.json').getList())

    //Add Bootstrap compatibility
    .withDOM("<'dt-toolbar'<'col-xs-12 col-sm-6'f><'col-sm-6 col-xs-12 hidden-xs'l>r>" +
    "t" +
    "<'dt-toolbar-footer'<'col-sm-6 col-xs-12 hidden-xs'i><'col-xs-12 col-sm-6'p>>")
    .withBootstrap(); 

    this.standardColumns = [
    DTColumnBuilder.newColumn('_id').withOption('defaultContent', '-'),
    DTColumnBuilder.newColumn('msg').withOption('defaultContent', '-'),
    DTColumnBuilder.newColumn('exception_cause').withOption('defaultContent', '-'),

  ];

输出
在此处输入图像描述

在上面的屏幕截图中,只有 100 页即将到来。在 1 页中有 10 条记录。因为 restheart 没有响应超过一千条记录。那么我们如何解决分页计数和分页问题。因为在分页中单击下一步按钮后,我可以再次获得超过一千条记录。但仍然计数相同 1000(记录总数为 2000),用户会感到困惑。

为了更多的理解,我附上了屏幕截图。
在此处输入图像描述

现在它如下所示:
在此处输入图像描述

所以我想用灵活的代码来修复。我在休息和角度数据表方面没有太多经验。

4

1 回答 1

0

在 restheart 分页是通过两个查询参数控制的:pagepagesize

pagesize最大值为 1000

查看有关分页的官方文档

如果您有 9000 个文档,您的请求可以是:

GET /db/coll?pagesize=100&page=1
GET /db/coll?pagesize=100&page=2
....
GET /db/coll?pagesize=100&page=90

以下请求将不返回 _embedded 数组中的文档:

GET /db/coll?pagesize=100&page=91 

要计算现有文档,您需要添加count查询参数:

GET /db/coll?pagesize=100&page=1&count

_size属性中返回的文档总数

请注意,如果您指定过滤器qparam,这也有效,例如:

GET /db/coll?pagesize=100&page=1&count&filter={"a":1}
于 2018-02-08T08:11:08.070 回答