Передача необязательных параметров в запрос Strapi без создания определения модели?

#geolocation #filtering #optional-parameters #strapi #bounding-box

#геолокация #фильтрация #необязательно-параметры #strapi #ограничивающий прямоугольник

Вопрос:

Я хочу передать дополнительный параметр geoDistance моей конечной точке Strapi. Этот параметр должен использоваться контроллером для первого запуска вычисления, а затем запрашивать те записи, которые содержат определенные значения долготы / широты.

Пример: предположим, что мой тип коллекции realestate содержит поля cityName , longitude и latitude поэтому мой запрос / путь будет выглядеть примерно так:

 GET /realestate?cityName=Berlinamp;geoDistance=5
  

Если я это сделаю, я получу сообщение об ошибке (если поле не отображается в моем определении модели):

 {
  "statusCode": 400,
  "error": "Bad Request",
  "message": "Your filters contain a field 'geodistance' that doesn't appear on your model definition nor it's relations"
}
  

Но я не хочу, чтобы это было в моем определении модели, потому что его следует использовать только временно перед выполнением фактического запроса (ограничивающего прямоугольника), например, что-то вроде этого:

 if (ctx.query.geodistance) {
  const geodistance = ctx.query.geodistance
  const { longitude, latitude } = getCityDegrees(ctx.query.cityName)
  // use geodistance in combination with lon, lat, etc...
}
  

Итак, вопрос в том, есть ли способ передать параметры без определения модели? Потому что сам параметр не должен отображаться внутри базы данных.

Ответ №1:

Я решил проблему, передав значение не через URL-запрос, а вместо этого через динамический параметр маршрута. Поэтому я определил новый объект routes следующим образом:

 {
  "method": "GET",
  "path": "/realestate/distance/:distance",
  "handler": "Realestate.find",
  "config": {
    "policies": []
}
  

А затем использовал его следующим const distance = ctx.params.distance образом…

Если есть другое решение для этого, я рад услышать об этом.

Комментарии:

1. Общий вопрос: когда дело доходит до фактического вычисления расстояния, используете ли вы необработанный запрос, и если да, работают ли функции стандартной модели Strapi?