我在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语句,数组声明是否有问题并使用?
答案 0 :(得分:1)
当您致电query.find({
时,您正在运行异步请求。您对response.success(avgArray);
的调用是在调用find
而不是内部回调之后调用,因此它在查询完成且云功能终止之前运行。
将您的通话移至response.success(avgArray);
以解决问题。