Открытие базы данных maxmind и доступ к ней в nodejs

Раньше я использовал так:

Открытие базы данных Maxmind в Nodejs

Теперь обновил модули согласно node 10. Так что нужна помощь в интеграции.

ссылка

const maxmind = require('maxmind');
exports.getIsoCountry = function(pIpAddress) {

  modules.debugLog('inside getIsoCountry : ',pIpAddress);

  maxmind.open(sGlAppVariable.maxmindDbPath)
  .then(function(lookup) {
    var ipData = lookup.get(pIpAddress);
    //console.log(ipData);
    console.log('iso_code',ipData.country.iso_code);
    return ipData.country.iso_code;
  });

}

console.log(getIsoCountry('66.6.44.4')); он должен печатать код страны. но это undefined всегда. потому что это обещание.

Как вызвать эту функцию getIsoCountry?

Любая помощь будет оценена.


person PITU    schedule 16.08.2019    source источник


Ответы (1)


Вам нужно дождаться завершения выполнения, для этого вы должны использовать Обещание.

Измените свой код, как показано ниже, тогда он должен работать:

const maxmind = require('maxmind');
exports.getIsoCountry = function(pIpAddress) {
  return new Promise((resolve, reject) => {
    modules.debugLog('inside getIsoCountry : ',pIpAddress);
      maxmind.open(sGlAppVariable.maxmindDbPath)
      .then(function(lookup) {
        var ipData = lookup.get(pIpAddress);
        console.log('iso_code',ipData.country.iso_code);
        resolve(ipData.country.iso_code);
      });
  });
}

getIsoCountry("66.6.44.4").then((rData) => {
  console.log(rData)
});

Ниже приведен пример кода:

var getIsoCountry = function(pIpAddress) {

  return maxmind().then(function() {
       return "Code for IP: " + pIpAddress;
    });

  function maxmind() {
    return new Promise((resolve, reject) => {
      resolve("done")
    });
  }

}

getIsoCountry("1.1.1.1").then((data) => {
  console.log(data)
});

person Hardik Shah    schedule 16.08.2019