【问题标题】:How to get more then one thousand(1000) record from RESHTHEART?如何从 RESHTHEART 获得超过一千(1000)条记录?
【发布时间】:2018-02-07 06:55:17
【问题描述】:

我正在使用 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 没有响应超过一千条记录。 那么我们如何解决分页计数和分页问题。因为点击分页中的next按钮后,我可以再次获得超过一千条记录。但仍然计数相同 1000(记录总数为 2000),用户会感到困惑。

为了便于理解,我附上屏幕截图。

现在如下图所示:

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

【问题讨论】:

    标签: angularjs mongodb datatables angular-datatables restheart


    【解决方案1】:

    in restheart 分页通过两个查询参数控制:pagepagesize

    pagesize最大值为1000

    查看有关paging的官方文档

    如果您有 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属性中返回的文档总数

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

    GET /db/coll?pagesize=100&page=1&count&filter={"a":1}
    

    【讨论】:

    猜你喜欢
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多