2014-02-20 2 views
0

я определил getChat синтаксического анализа облака код вызова (как показано ниже), но когда я запускаю его, он не возвращает никаких результатовсинтаксического анализа запрос не возвращает результаты

Parse.Cloud.define("getChat", function(request, response) { 
    var allchat = []; 
    var query = new Parse.Query("chat"); 
    query.find().then(function(results) { 
    console.error("test"); //nothing in console 
    console.error(results.length); //nothing in console 
    for (var i = 0; i < results.length; ++i) { 
     for(var iii = 0; iii<results[i].get("limitleft").length; iii+=2){ 
     if(results[i].get("limitleft")[iii] == request.params.user){ 
      allchat.push(results[i]); 
     } 
     } 
    } 
    }); 
    response.success(allchat); 
}); 

ответ

1

Qeury.find() возвращает Обещание. ". then" присоединяет функцию обратного вызова к этому обещанию. Когда Find завершает работу, он выполняет обратный вызов. Однако вы вызвали response.success() сразу после того, как вы начали поиск. Результаты пока не получены. Вызов response.success() эффективно отменяет поиск, потому что getChat завершен вызовом response.success().

Положите вызов на response.success() внутри блока!

-Bob

+0

так что код запускает его на фоне, а затем запускает следующий код? – wuiyang

+0

Когда функция getChat запускается, она начинает поиск набора объектов, а затем выходит. Находка все еще запущена, и response.success() еще не вызван, поэтому контекст поддерживается. Когда поиск завершается, блок запускается. Если блок затем вызывает response.success(), исходный вызов будет завершен, а контекст удален. – LostInTheTrees

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