Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

219
Views
How to get all data after callback method?

I am using node js to get all contact data from Google API. USing callback function but it takes some time to get data due to run function before next function. I am very new in node JS can someone help me to sort it out. I want all data return once the callback function is called.

A contact function to get all contacts.

app.get('/contacts', async function(req, res){
  
  // Rendering our web page i.e. Demo.ejs
  // and passing title variable through it
    fs.readFile('credentials.json', (err, content) => {
    if (err) return console.log('Error loading client secret file:', err);
    // Authorize a client with credentials, then call the Google Tasks API.
     await  authorize(JSON.parse(content), listConnectionNames);
     res.send(full_person_array)
  });
  

})

This one is autorize function that callback listConnectionNames fucntion.

function authorize(credentials, callback) {

  return new Promise((resolve, reject) => {
    const {client_secret, client_id, redirect_uris} = credentials.installed;
    const oAuth2Client = new google.auth.OAuth2(
        client_id, client_secret, redirect_uris[0]);
  
    // Check if we have previously stored a token.
    fs.readFile(TOKEN_PATH, (err, token) => {
      if (err) return getNewToken(oAuth2Client, callback);
      oAuth2Client.setCredentials(JSON.parse(token));
      callback(oAuth2Client, id);
      return resolve();

    });

  })
 
}


function listConnectionNames(auth) {
  const service = google.people({version: 'v1', auth});
  service.people.connections.list({
    resourceName: 'people/me',
    pageSize: 50,
    personFields: 'names,emailAddresses,phoneNumbers',
  }, (err, res) => {
    if (err) return console.error('The API returned an error: ' + err);
    const connections = res.data.connections;
    if (connections) {
      console.log('Connections:');
      connections.forEach((person) => {
        console.log(person);
        full_person_array.push(person);
      });
    } else {
      console.log('No connections found.');
    }
  });
}

How to get all data in contact without get delayed empty data.

about 4 years ago · Santiago Gelvez
1 answers
Answer question

0

You can add returns instead of mapping the result array to fill an other array :

function authorize(credentials) {

    const {
        client_secret,
        client_id,
        redirect_uris
    } = credentials.installed;
    const oAuth2Client = new google.auth.OAuth2(
        client_id, client_secret, redirect_uris[0]);

    // Check if we have previously stored a token.
    return fs.readFile(TOKEN_PATH, (err, token) => {
        if (err) return getNewToken(oAuth2Client);
        oAuth2Client.setCredentials(JSON.parse(token));
        return oAuth2Client;

    });
}


async function contact() {
    let auth = await authorize(credentials);
    let connections = await listConnectionNames(auth, id);
    console.log(connections); // full result
}

Does it helps you ?

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!