Казалось бы, вы пытаетесь получить доступ к параметру в вашем API, не передавая его в своем запросе. Вы просите параметры здесь:
await reports.findOne({_id: new mongodb.ObjectID( req.params.id)})
, но не передали ни одного в вашем запросе. Это должно сделать это:
return axios.get('/:id', {
params: {
id: `${id}`
}
})
Не гарантируемый, но большинство браузеров отправляют HTTP-заголовок Принимать-языка, который указывает en-us, если они из США. Некоторые более старые браузеры только сказали, что они - en, все же. И не все машины настраиваются правильно для указания, какую локаль они предпочитают. Но это - хорошее первое предположение.
англо-британские основанные пользователи обычно устанавливают свою систему или пользовательскую локаль к англо-британскому, который в конфигурациях браузера по умолчанию должен привести к en-ГБ как Принять заголовок Языка. (Более ранняя версия этого сказала en-Великобританию; это было опечаткой, извините.) Другие страны также имеют en локали, такие как en-za (Южная Африка), и, прежде всего, теоретически, комбинации как en-мировой-судья также возможны.
основанные на гео-IP предположения менее вероятно будут корректны на предпочтительном языке/локали, как бы то ни было. Google думает, что довольное согласование на основе геолокации IP-адреса имеет смысл, который действительно раздражает меня, когда я нахожусь в Японии или Корее...
Можно проверить HTTP_ACCEPT_LANGUAGE
заголовок (от $ _SERVER), который отправит большинство браузеров.
Смотрят на Zend_Locale для примера, или возможно Вы могли бы даже хотеть использовать lib.
Можно сделать некоторый IP comparaison без наличие целой библиотеки, чтобы сделать это.
API, этот путь ничто не необходимо с Вашей стороны. Это - веб-API, которые сообщают страну:
Example: http://api.hostip.info/get_html.php?ip=12.215.42.19
Return : Country: UNITED STATES (US)
, Но, Сделайте, чтобы Вы думали для использования языка агента браузера? Вы смогли знать тип английского языка от него.
Этот веб-сайт, названный , BlockCountry позволил Вам иметь список IP страной. Конечно, Вы не хотите блокироваться, но можно использовать список IP и сравнить их (получите весь американский IP...), это не могло бы быть точно...
Для идентификации Вашей страны посетителей я использовал расширение GeoIP, очень простое использовать.
$ синтаксического анализа _SERVER ["HTTP_ACCEPT_LANGUAGE"] для получения страны и локали браузера
Учитывая Вашу формулируемую цель, заголовок Принимать-языка является более подходящим решением, чем основанная на IP геолокация. Действительно, это - точно намеченная цель Принимать-языка.
http://countries.nerd.dk сервис - то, что я использую для отображения IP в страну. Это работает действительно хорошо и бывший основанный DNS, кэшируется хорошо также.
можно также загрузить базу данных для локального использования, если Вы не хотите полагаться на внешний сервис.