Using Parse.com for few months now, I started to create some Cloud Function To let me create and retrieve some element in a TimeLine
I need to get my information from timeline's class and once I retrieve elements, I have to call getStat to add in the same object Widgets both information from my query and from the results from getStat.
I have tried to use Promise to achieve this, but not sure it was the best way to deal with it. Any suggestions / help ?
Parse.Cloud.define("getTimeline", function(request, response) {
var user = request.params.user;
var limit = request.params.limit;
var page = request.params.page;
if (limit === undefined) limit = 10;
if (page === undefined) page = 0;
var Timeline = Parse.Object.extend("timeline");
var query = new Parse.Query(Timeline);
query.equalTo("user", user);
query.descending('createdAt');
query.limit(limit);
query.skip(page * limit);
var Widgets = {};
query.find().then(function(results) {
var promise = Parse.Promise.as();
_.each(results, function(result) {
var Widget = new Object();
Widget.data = result;
var timeline_id = result.get('timeline_id');
promise = promise.then(function() {
return Parse.Cloud.run('getStats', {
'timeline_id': timeline_id
}).then(function(stat) {
Widget.stat = stat;
Widgets[timeline_id] = Widget;
});
});
});
return promise;
}).then(function() {
response.success(Widgets);
},
function(error) {
response.error("Error: " + error.code + " " + error.message);
});
});