Как преобразовать обратный вызов в асинхронное ожидание в node.js

#node.js #asynchronous #async-await #callback #asynccallback

Вопрос:

Здесь я хочу использовать данные vertica в другом модуле, позвонив getDataFromdb

 async function getDataFromdb() {
  const connection = await vertica.connect(config);
  const result = connection.query('select * from person', (err, result) => {
    if (result) {
      verticadata = map(result);
      console.log(verticadata);
      return verticadata;//->returning from callback
    }
    console.log(result);//->Here i want data but giving the connection details
  });
}
 

Но позже я узнал, что не могу вернуть данные vertica из обратного вызова, нам нужно передать ему функцию обратного вызова, которая будет выполняться после завершения, я перешел на этот способ

 async function getDataFromdb(fn) {
  const connection = await vertica.connect(config);
  const result = connection.query('select * from person', (err, result) => {
    if (result) {
      verticadata = map(result);
      fn(verticadata);
      return verticadata; //->returning from callback
    }
    console.log(result); //->Here i want data but giving the connection details
  });
}

function get(fn) {
  getDataFromdb(verticaData => fn(verticaData));
}
 

Я экспортировал вышеуказанную функцию get и использовал ее в другом модуле, как показано ниже

 getEx() {
  get(function(verticaData) {
      console.log(verticaData)
      //But i want to return the value out of this
    }
  }
}
 

Но опять же я хочу вернуть значение из этого в getEX . Опять же, это похоже на описанный выше сценарий

После того, как я узнал, используя async / await это легко

 async function getDataFromdb() {
  const connection = await vertica.connect(config)
  const result = await connection.query("select * from person")
  console.log(result) -- > giving the connection details not the data how to work on this
}