此Parse云代码中声明的数组是否存在任何问题?

时间:2014-07-19 17:55:56

标签: ios parse-platform cloud

我在Parse cloud上有以下代码

Parse.Cloud.define("getJournalEntryWeekly", function(request, response) {
var currDate =new Date( request.params.currDate);
var user = request.params.user;
var avgArray = new Array();

for(i = 0;i < 7; i++)
{

 var d1 = new Date(currDate.getTime() + 1000 * 60 * 60 * 24 * (i+1)); 
 var d2 = new Date(currDate.getTime() + 1000 * 60 * 60 * 24 * (i));
 var query = new Parse.Query("JournalEntry");
 query.greaterThan("createdAt",d2);
 query.lessThan("createdAt",d1);
 query.equalTo("userName",user);

 query.find({
   success: function(results) {

    if(results.length > 0)
    {
    var entry = results[0];
    //response.success(entry.get("level"));
    console.log(entry.get("level"));
   // avgArray.push(entry.get("level"));

    }
    else
    {
     response.error("no entry found");
    }
},
error: function() {
  response.error("no entry found");
}
});
}
response.success(avgArray);

});

如果删除'response.success(avgArray)'行,此代码执行console.log语句,数组声明是否有问题并使用?

1 个答案:

答案 0 :(得分:1)

当您致电query.find({时,您正在运行异步请求。您对response.success(avgArray);的调用是在调用find而不是内部回调之后调用,因此它在查询完成且云功能终止之前运行。

将您的通话移至response.success(avgArray);以解决问题。