我是javascript的新用户,但我不太确定我是否错过了一次成功/错误通话,我看了一下,看起来所有人都打电话给我。
Parse.Cloud.job("UpdateWeekData", function(request, response) {
var weeks = [];
var weekCount = 0;
var weekQuery = new Parse.Query("WeekList");
weekQuery.find({
success: function(results) {
for (week in results) {
var weekCount = Parse.Query("Schedule");
weekQuery.equalTo("weekObj", week);
weekQuery.count({
success:function(count) {
var max = week.get("maxAppts");
week.set("apptsRemain", (max - count));
week.set("numApptsSch", count);
week.save();
},
error: function(error) {
response.error(error.message);
}
});
}
} ,
error: function(error) {
response.error(error.message);
}
});
});
知道我错过了哪个电话?解析云代码说"没有调用成功/错误"
答案 0 :(得分:0)
由于是后台工作,您应该像this示例中那样致电status.error()
或status.success()
。
您的代码中的问题是,您实际上并未在任何地方调用status.success()
。您的功能完成后,您必须始终致电status.error()
或status.success()
。为每个循环调用Parse Query会使它变得有点复杂(并且可以进行大量的重新编译!)因为您没有等待weekQuery.count
完成。使用计数通常也是not recommended。
您还应该了解promises如何工作,这样您就知道如何等待查询并在完成所有操作后调用错误/成功 - 如果在查询完成之前调用成功/错误,它将被中止。
也许您应该在数据库中实现自己的计数逻辑,或者您可以查询weekObj等于任何结果,查找所有对象,然后对于每个检索到的对象,您可以获得“weekObj”字段以了解结果中的哪一个等于。但请记住,find默认返回100个对象,最多1000个对象(如果您使用的是parse.com而不是Parse Server):
weekQuery.equalTo("weekObj", results);
weekQuery.find();