Как получить более тысячи (1000) записей от RESHTHEART?

Я использую 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), пользователь будет сбит с толку.

Для большего понимания прикрепляю снимок экрана.
введите здесь описание изображения

Теперь это происходит, как показано ниже:
введите здесь описание изображения

Поэтому я хочу исправить с помощью гибкого кода. У меня нет большого опыта работы с данными restheart и angular.


person Varun Sharma    schedule 07.02.2018    source источник


Ответы (1)


в restheart пейджинг управляется двумя параметрами запроса: page и pagesize.

Максимальное значение 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.

Обратите внимание, что это также работает, если вы укажете параметр filter qparam, например:

GET /db/coll?pagesize=100&page=1&count&filter={"a":1}
person Andrea Di Cesare    schedule 08.02.2018
comment
Если добавить параметр запроса hal=f к каждому GET, можно также активировать режим HAL и получите ссылки на страницы. - person mturatti; 08.02.2018