Parse.Cloud.define("bulkUpdateUserViewedTraces", function(request, response){
Parse.Cloud.useMasterKey();
var userQuery = new Parse.Query(Parse.User);
userQuery.limit(200);
var userCount = 0;
userQuery
.find(function (users) {
var promises = _.map(users, function (user){
userCount++;
return populateViewedTraces(user);
});
return promises;
})
.then(function (promises) {
return Parse.Promise.when(promises);
})
.then(function(){
console.log("Processed " + userCount + " users");
response.success("Processed " + userCount + " users");
}, function(error){
console.error(JSON.stringify(error));
response.error(error);
});
});
function populateViewedTraces (user) {
var viewedTracesCount = 0;
var viewHistoryQuery = new Parse.Query("ViewHistory");
viewHistoryQuery.equalTo("user", user);
return viewHistoryQuery
.each(function (viewHistory) {
console.log("Got here");
viewedTracesCount++;
})
.then(function () {
console.log("Got here 2");
return user.save();
});
}
Doesnt work. Logs "Processed x users" but never logs "got here". The promises should execute during the when() call, but never do.
This makes absolutely no sense as every post I've seen describing when is written like this. For some reason this just doesnt do anything.