Ionic 4+ paginated rest api фильтр поиска с бесконечной прокруткой - PullRequest
0 голосов
/ 05 ноября 2019

Я использую ионный 5.4.5. RestApi был создан с узлом и экспресс JS. Когда я хочу искать, приложение просто ищет данные на первой странице. Я хочу, чтобы приложение выполняло поиск всех данных. Как я могу это сделать?

Наш API-интерфейс разбит на страницы.

app.get("/units", (req, res) => {
   let page = parseInt(req.query.page)
   let limit = parseInt(req.query.limit)

   if(!page && !limit){
      page = 1;
      limit = 5;
   }

   let startIndex = (page -1) * limit
   let endIndex = page * limit

   let results = {} 
   if(endIndex < data.length){
   results.next = {
      page : page + 1,
      limit : limit
   }
   }

   if(startIndex > 0){
   results.previous = {
      page : page - 1,
      limit : limit
   }
}

   results.results = data.slice(startIndex,endIndex)
   res.json(results);
});

app.get("/units/:id", (req, res) => {
   const itemId = req.params.id;
   const item = data.find(_item => _item.id == itemId);

   if (item) {
      res.json(item);
   } else {
      res.json({ message: `item ${itemId} doesn't exist`})
   }
});

home.page.ts

 getItems(ev) {
   let val = ev.target.value;

   if (val == '') {
   this.loadUnit();
   return;
   }
    if (val && val.trim() != '') {
      this.unit = this.unit.filter((un,name) => {
        return (un.name.toLocaleLowerCase().indexOf(val.toLocaleLowerCase()) > -1);
      })
    } 
 }

Я также использую сервис для получения данных из API.

1 Ответ

0 голосов
/ 05 ноября 2019

Либо верните все данные из API и выполните фильтрацию и разбиение на страницы в приложении. Или выполните фильтрацию и разбиение на страницы (в таком порядке) в API.

Последний вариант, вероятно, лучше, если имеется много строк данных, поскольку:

  • Отправка всех строк вприложение будет использовать много данных и отнимать много времени, особенно через WiFi или мобильное соединение для передачи данных.
  • Обработка на сервере обычно быстрее, чем на клиенте, особенно если это мобильное устройство.

Возможно, вы также захотите вернуть общее количество строк из API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...