2014-02-20 234 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」將回調函數附加到該承諾上。當查找完成時,它執行回調。但是,您在啓動查找後立即調用response.success()。結果尚未交付。調用response.success()可以有效地取消查找,因爲getChat通過調用response.success()完成。

將調用放入塊中的response.success()!

-Bob

+0

讓代碼在後臺運行它,然後運行下一個代碼? – wuiyang

+0

當函數getChat運行時,它啓動一組對象的查找,然後退出。該查找仍在運行,並且response.success()尚未被調用,所以上下文保持不變。當查找完成時,塊將運行。如果該塊然後調用response.success(),則原始調用將完成並且上下文被刪除。 – LostInTheTrees