2014-09-07 2 views
0

Вот код облака javascript, который я написал. Я хочу найти все объекты в подклассе «Пример», имеющие один, а затем сбросить их как четыре. Я уже установил столбец Example и Like в браузере данных. Но запрос не работал, и я не могу понять, почему.Функция поддержки кода облачного кода не работает

function exampleFunction() { 
    var Example = Parse.Object.extend("Example"); 
    var newObject = new Example(); 
    newObject.save(); // until here, the function works, it continues creating new objects 
    var query = new Parse.Query(Example); 
    query.equalTo('Like',1); 
    query.find({ 
    success:function(result){ 
     for (var i = 0; i < result.length; i++) { 
      result[i].set('Like',4); 
     } 
    }, 
    error:function(error){ 

    } 
    }) 
} 

    Parse.Cloud.define("nice", function(request, response) { 
     exampleFunction(); 
     response.success(); 
    }); 

Я использую этот период кода на IOS устройства, чтобы вызвать функцию облака:

[PFCloud callFunctionInBackground:@"nice" 
        withParameters:@{} 
          block:^(NSString *result, NSError *error) { 
           if (!error) { 
           } 
          }]; 
+1

Вы должны 'NSLog («Ошибка:% @», ошибка);' внутри блока, так что вы получите больше информации, а затем обновить ваш вопрос – ccwasden

+0

Я пойду с этим. Если вы можете найти сообщение об ошибке, это поможет решить проблему. – ArtOfCode

ответ

1

Несколько возможных вопросов ..

  1. Вы вызываете асинхронные методы и не давая их время для завершения. Вот тут и появляются Parse Promises. Вы должны обязательно использовать функцию then. См http://blog.parse.com/2013/01/29/whats-so-great-about-javascript-promises/
  2. Вы правильно настроить «Как» 4, но вы не спасаете строки по телефону save
  3. Вы не можете иметь какую-либо строки, возвращающуюся из вашего запроса, они способом проверить, что это пройти количество строк нашел обратно через обратный вызов, который я делаю ниже

Попробуйте это ниже, заметив, что .success должен возвращать результат, если вы NSLog(@"result %@",result) из вашего Objective-C. Кроме того, ошибка должна приходить через сейчас, а из-за response.error(error)

var Example = Parse.Object.extend("Example"); 

function exampleFunction() { 
    var query = new Parse.Query(Example); 
    query.equalTo('Like',1); 
    return query.find().then(function(examplesLikedOnce){ 
    var promises = []; 
    for (var i = 0; i < examplesLikedOnce.length; i++) { 
     var example = examplesLikedOnce[i]; 
     var promise = example.save({Like:4}); 
     promises.push(promise); 
    } 
    return Parse.Promise.when(promises).then(function(){ 
     return examplesLikedOnce.length; 
    }); 
    }); 
} 

Parse.Cloud.define("nice", function(request, response) { 
    exampleFunction().then(function(numExamples){ 
     response.success("The number of Example objects with 1 like: "+numExamples); 
    }, function(error){ 
     response.error(error); 
    }); 
}); 
+0

Спасибо за помощь. но я попробовал ваше решение, и он все еще не работает. Я даже установил ACL всех объектов в publicWriteAccess true. И в консоли нет сообщения об ошибке. –

+0

Я также пишу еще один период кода, но он все еще не работает, не знаю почему: https: //www.dropbox.com/s/w8k23f5ja8fsffo/sample.js? Dl = 0 –

+0

ответ обновляется .. попробуйте еще раз – ccwasden

Смежные вопросы