未调用成功/错误

时间:2016-04-14 22:56:09

标签: javascript parse-platform cloud parse-cloud

我是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);
    }
});
});

知道我错过了哪个电话?解析云代码说"没有调用成功/错误"

1 个答案:

答案 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();