Простой пример, я думаю. Я хочу использовать Express для возврата IP-адреса пользователя и имени хоста по запросу. Но разрешение этого имени хоста по IP доставляет мне немного хлопот.
router.get('/', (req, res) => {
logRequest(req, res);
});
async function logRequest(req, res) {
res.send({
ip: req.ip,
hostname: await getRemoteHostName(req.ip)
});
}
async function getRemoteHostName(ip) {
await require('dns').reverse(ip, (err, domains) => {
if (err) { handleError(err); return; }
return domains.map(s => s.toLowerCase());
});
}
Все, что я получаю, - это мой IP {ip: 192.168.10.100}
, когда я ожидаю, что я тоже должен получить свое имя хоста. Если я console.log
мое имя хоста, он печатает на консоль, но имя хоста не отправляется обратно в ответ через экспресс. Что я делаю неправильно? Я чувствую, что express отправляет ответ обратно до того, как dns.reverse
сможет завершить поиск, но я хочу, чтобы поиск завершил , а затем вернул ответ.