Return data of callback function Node.js [duplicate]
I don't know how is your app structure, but First Simple solution is below:
app.get('/materialize', function(req, res) { api500px.photos.getByUsername ('username', {'sort': 'created_at', 'image_size': '3'}, function(error, results) { if (error) { console.log(error); return; } var dataPx = results.photos; res.render('materialize.ejs', {dataPx: dataPx}); }); });
OR adopt better and cleaner approach, use q library,
Wrap api500px.photos.getByUsername
in a promise as:
function getUserPhotosAsync() { var deferred = q.defer(); api500px.photos.getByUsername ('username', {'sort': 'created_at', 'image_size': '3'}, function(error, results) { if (error) { deferred.reject(error); } deferred.resolve(results.photos); }); return deferred.promise;}
And use it as:
app.get('/materialize', function(req, res) { getUserPhotosAsync().then(function(dataPx) { //looks cool isn't it? res.render('materialize.ejs', {dataPx: dataPx}); }); });
Happy Helping!