I need to implement the following in my Parse.Cloud.Job:
- Get all objects from my Parse.com class
- Make Parse.Cloud.httpRequest using values of each one of the objects from my Parse.com class
- Process Parse.Cloud.httpRequest response and save it to my Parse.com class
Currently i can retrieve all objects from my class (step 1) but when i am trying to make httpRequest (step 2) the cloud job is finished.
Parse.Cloud.job("myCloudJob", function(request, status){
var countObjects;
var objectsArray = [];
var query = new Parse.Query("MyClass");
query.limit(200);
query.find().then(function(results){
countObjects = results.length;
objectsArray = results;
}).then(function(){
for(i = 0; i < countObjects; i++){
var valueOne = objectsArray[i].attributes.valueOne;
Parse.Cloud.httpRequest({
url: 'https://www.myApi.com/',
params: {value: valueOne}
}).then(function(httpResponse) {
console.log(httpResponse.status);
response.success('Status: ' + httpResponse.status + 'Response: ' + httpResponse.text);
}, function(httpResponse) {
console.error('Request failed with response code ' + httpResponse.status);
response.error('Error, status ' + httpResponse.status + ' data' + httpResponse.text);
});
}
status.success("There " + countObjects + " objects in MyClass.");
}, function(error) {
status.error("Error: " + error.code + " " + error.message);
}
);
});
Can someone help me with this task please ?
UPDATE:
Parse.Cloud.job("myCloudJob", function(request, status){
var countObjects;
var objectsArray = [];
var query = new Parse.Query("MyClass");
query.limit(200);
query.find().then(function(results){
countObjects = results.length;
console.log("There " + countObjects + " objects to process.");
objectsArray = results;
}).then(function(){
for(var i = 0; i < countObjects; i++){
var promises = [];
console.log("i: " + i + " promises " + promises);
var objectId = objectsArray[i].id;
var myValue = objectsArray[i].attributes.value;
promises.push(Parse.Cloud.httpRequest({
url: 'https://www.myApi.com',
params: {value: myValue}
})
.then(function(httpResponse){
var dataFromResponse = httpResponse.data;
var Point = Parse.Object.extend("MyClass");
var point = new Point();
point.id = objectId;
point.set("value", dataFromResponse);
return point.save();
}));
return Parse.Promise.when(promises);
}
}).then(function(){
status.success("Job completed");
},function(){
status.error("Error running Job");
});
});