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();
});
}
動作しません。「Processed x users」はログに記録しますが、「get here」はログに記録しません。プロミスは when() 呼び出し中に実行する必要がありますが、実行することはありません。
これは、いつ記述されているかについて私が見たすべての投稿がこのように書かれているため、まったく意味がありません。何らかの理由で、これは何もしません。