2015-07-13 3 views
1

Итак, у меня есть список из 200 строк в моем синтаксическом анализаторе. Я пытаюсь создать задание, которое проходит через весь список и изменяет весь столбец push на 0. Я пытаюсь сделать это с помощью этого кода:Parse Cloud Code Сохранить все

Parse.Cloud.job("SetPush", function(request, response) { 
        //take in JSON with dict 

        var newts = new Array(); 

        for (var i = 0; i < request.params.push.length; i++) 
        { 
        //add these entries to db 
        var DataClass = Parse.Object.extend("AllTeams"); 
        var dataupdate = new DataClass(); 

        var origdata = request.params.datalist[i]; 
        dataupdate.set("push", "0"); 

        newts[i]=dataupdate; //add another item to list 

        } 

        Parse.Object.saveAll(newts,{ 
             success: function(list) { 
             // All the objects were saved. 
             response.success("ok "); //saveAll is now finished and we can properly exit with confidence :-) 
             }, 
             error: function(error) { 
             // An error occurred while saving one of the objects. 
             response.error("failure on saving list "); 
             }, 
             }); 

        //default body does not do response.success or response.error 

        }); 

Как вы можете видеть мой класс является SetPush, и я хочу, чтобы обновить push столбец весь путь вниз. Проблема, которую я считаю, заключается в следующем:

for (var i = 0; i < request.params.push.length; i++) 

Когда я запускаю этот код в облаке кодекса, он возвращает эту ошибку:

'TypeError: Cannot read property 'length' of undefined at main.js:43:60' 

Что я делаю неправильно? Спасибо

+1

Dear Nicholas; У меня есть вопрос. Есть ли тип списка, который запрашивается? (вы вызываете push от параметров запроса)? – kingspeech

+1

@kingspeech Я честно понятия не имею, какой толчок должен быть. Вот что случилось, ха-ха! – Nicholas

+1

Дорогой Николай, со своего поста я могу собрать такую ​​информацию; сообщение должно быть своего рода списком, длина которого должна быть действительной. Просто проверьте место запуска функции облака, чтобы вы могли видеть параметры, которые вы даете для запроса. Надеюсь, что это поможет. – kingspeech

ответ

0

. Длина не определена, потому что request.params.push является объектом. Похоже, вы хотите перебирать список, который вы передаете этой облачной функции, используя входной параметр request.params.push, если/предполагая, что вызывающий объект проходит в действительном JSON как «push», тогда вы можете сделать что-то вроде этого

Parse.Cloud.job("SetPush", function(request, response) {      
//take in JSON with dict   
var parsedJson = JSON.parse(request.params.push);       
var newts = new Array();      
for (var i = 0; i < parsedJson.length; i++)      
{      
//add these entries to db      
var DataClass = Parse.Object.extend("AllTeams");      
var dataupdate = new DataClass();      
var origdata = request.params.datalist[i];      
dataupdate.set("push", "0");      
newts[i]=dataupdate; //add another item to list      
}      

Parse.Object.saveAll(newts,{           
success: function(list) {           
// All the objects were saved.           
response.success("ok "); 
//saveAll is now finished and we can properly exit with confidence :-)           
},           
error: function(error) {           
// An error occurred while saving one of the objects.           
response.error("failure on saving list ");           
},           
});      //default body does not do response.success or response.error      
});