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.