Ложный поисковый фильтр с использованием json-сервера - PullRequest
0 голосов
/ 27 августа 2018

У меня есть routes.json и db.json

Маршрут

  "/api/*/_search?*=:searchstring": "/$1/?$2_like=:searchstring",
  "/api/*": "/$1"

DB.json

 {
  "cats": {
    "cats": []
  },
  "bats": [],
  "recordList": {
    "records": [
      {id:1, name: 'abc'},
      {id:2, name: 'def'},
      {id:3, name: 'ghi'}
    ]
  }
}

Абсолютно точное извлечение списка записей с указанными выше конфигурациями.

Необходимо понять, как макетировать вызов фильтра поиска ниже:

http:localhost:3001/api/_search?name=abc

Обновлены маршруты:

{
  "/api/*": "/$1",
  "/api/_search?name_like": "/$1"
}

Перейдя по этой ссылке: https://github.com/typicode/json-server/issues/654#issuecomment-339098881

Но не указав URL-адрес конфигурации, что я делаю неправильно?Я что-то здесь упускаю?Термин поиска является динамическим, поэтому передаваемое значение должно быть приемлемым только для переменной, но в комментарии оно является статическим.Пожалуйста, помогите с этим, если кто-то имел подобные проблемы и решил

Если поиск 'abc', он должен вернуть

{
  records: [{id: 1, name: 'abc'}]
}

1 Ответ

0 голосов
/ 27 августа 2018

Вам нужно написать свой маршрут поиска следующим образом:

{
  "/api/records/_search?name=:searchstring": "/records/?name_like=:searchstring"
}

Или, что еще лучше, вы можете параметризовать с заменой от * до $1, таким образом, вы сможете искать любой параметр взапрос, и в любом наборе данных, records или других:

{
  "/api/*/_search?*=:searchstring": "/$1/?$2_like=:searchstring",
  "/api/*": "/$1"
}

После этого ваш запрос к http://localhost:3001/api/records/_search?name=ab будет с ответом:

[
  {
    "id": 1,
    "name": "abc"
  }
]

Дополнительные документы по маршрутизации.

...