未调用成功/错误

Success / Error not called

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

知道我哪里漏接电话了吗? Parse Cloud Code 表示 "success/error was not called"

因为它是后台作业,您应该调用 status.error()status.success(),如 this 示例。

您的代码中的问题是,您实际上没有在任何地方调用 status.success()。您必须在函数完成时始终调用 status.error()status.success()。为每个循环调用 Parse Query in 会使它变得有点复杂(并且它会产生很多请求!)因为你没有等待 weekQuery.count 完成。另外用count一般是not recommended.

您还应该了解 promises 的工作原理,这样您就知道如何等待查询并在一切完成后调用 error/success - 如果您在查询完成之前调用 success/error,它将被中止。

也许您应该在数据库中实现自己的计数逻辑,或者您可以在 weekObj 等于任何结果的地方进行查询,找到所有对象,然后对于每个检索到的对象,您可以获得 "weekObj" 字段以了解哪个结果是否等于。但请记住,默认情况下查找 returns 100 个对象,最多 1000 个对象(如果您使用的是 parse.com 而不是 Parse Server):

weekQuery.equalTo("weekObj", results);
weekQuery.find();