2014-09-23 2 views
0

사용자 테이블에 사용자 정의 열을 설정하는 클라우드 기능을 정의했습니다. 나는 6 개 결과 내 쿼리에 대해 반환했지만 필드의 업데이트는 질의 후, 아래의 코드를 잘못 이해하지 수, 3 행에 대한Parse.com : 사용자 테이블 업데이트가 작동하지 않습니다.

Parse.Cloud.define("updateSaturdayAbsentWeeks", function(request, response) { 
// User master key so that we can update all users 
Parse.Cloud.useMasterKey(); 
// Tables to Query 
var query = new Parse.Query(Parse.User); 
// We want only players who are absent on Saturdays 
query.equalTo("isSaturdayAbsent", true); 
query.find({ 
    success: function(results) {  
     console.error('updateSaturdayAbsentWeeks, Saturday absent players count ' + results.length); 
     for (var i = 0; i < results.length; i++) { 
      var absentUser = results[i]; 
      var absentWeeks = absentUser.get('saturdayAbsentWeeks') - 1; 
      absentUser.set("saturdayAbsentWeeks", absentWeeks); 
      absentUser.save(); 
      console.error('updateSaturdayAbsentWeeks, absentWeeks for user name = ' + absentUser.get('username') + ', is = ' + absentWeeks) 
     } 

     // All done 
     response.success("updateSaturdayAbsentWeeks finished successfully"); 
    }, 
    error: function() { 
     console.error("runSaturdayExpense, lookUp Failed - Each player enjoyed the game on Saturday "); 
     response.error("updateSaturdayAbsentWeeks failed"); 
    } 
}); 
}); 

을 어떻게 내가 6 개 기록을 돌아 볼 수 있지만 용의 루프는 3 개의 레코드 만 업데이트하고 다른 3 개의 레코드에는 아무 것도 수행하지 않으며 오류가 반환되지 않습니다.

6 개의 레코드가 모두 업데이트되지 않는 이유를 이해할 수있는 모든 정보가 크게 도움이 될 것입니다.

감사

이것은 save() 함수가 비동기식이라는 사실과 관련이있다

답변

2

. 이를 수행하는 적절한 방법은 saveAll()을 사용하는 것입니다.

query.find({ 
    success: function(results) { 
     var saveThese = []; 
     for (var i = 0; i < results.length; i++) { 
      var absentUser = results[i]; 
      var absentWeeks = absentUser.get('saturdayAbsentWeeks') - 1; 
      absentUser.set("saturdayAbsentWeeks", absentWeeks); 
      saveThese.push(absentUser); 
     } 
     Parse.Object.saveAll(saveThese, { 
      success: function (list) { 
       response.success("updateSaturdayAbsentWeeks finished successfully"); 
      }, 
      error: function (error) { 
       response.error("did not save all the items"); 
      } 
     }); 
    }, 
    error: function() { 
     response.error("updateSaturdayAbsentWeeks failed"); 
    } 
}); 
관련 문제