Parse platform 为parse.com后台作业实现一天以上的重复间隔

Parse platform 为parse.com后台作业实现一天以上的重复间隔,parse-platform,scheduled-tasks,Parse Platform,Scheduled Tasks,我创建了如下背景工作: Parse.Cloud.job("ResetLeaderboard", function(request, response) { Parse.Cloud.useMasterKey(); var query = new Parse.Query("Leaderboard"); query.find( { success: function(result

我创建了如下背景工作:

Parse.Cloud.job("ResetLeaderboard",
    function(request, response)
    {
        Parse.Cloud.useMasterKey();

        var query = new Parse.Query("Leaderboard");

        query.find(
            {
                success: function(results)
                {
                    response.success("Success!");
                },

                error: function(error)
                {
                    response.error(error);
                }
            })
            .then(
                function(results)
                {
                    return Parse.Object.destroyAll(results);
                });
    });
我想每15天运行一次此作业。但在www.parse.com上没有选项可以设置超过一天的时间间隔


我想我需要使用一个时间戳,并将该值与当前时间进行比较。有人能告诉我做这件事的标准方法吗?

你是对的,作业调度UI被限制在一天之内。解决此问题的方法是每天运行作业,但在15次运行中有14次不执行任何操作。那些什么都不做的运行将是浪费,但从微观上看是如此,parse无论如何都在支付账单

解决方案的细节取决于具体的需求。如果您需要最大的控制,比如从毫秒特定的时间开始精确地控制15天到毫秒,那么您需要在数据库中创建一些暂存空间,以保存上次运行的状态(特别是日期)

但这项工作看起来像是一项清理任务,要求“非常接近15天,在15天内开始”就足够了。有了这个更简单的要求,你的直觉是正确的,简单的日期算法可以工作

同样重要的是,在我看来,你的意图是找到几个需要删除的对象,然后删除它们。贴出的逻辑并不能完全做到这一点。我已经修复了逻辑错误并清理了承诺处理

// Schedule this to run daily using the web UI
Parse.Cloud.job("ResetLeaderboard", function(request, response) {
    if (dayOfYear() % 15 === 0) {
        var query = new Parse.Query("Leaderboard");
        query.find().then(function(results) {
            Parse.Cloud.useMasterKey();
            return Parse.Object.destroyAll(results);
        }).then(function() {
            response.success("Success!");
        }, function(error) {
            response.error(error);
        });
    } else {
        response.success("Successfully did nothing");
    }   
});

function dayOfYear() {
    var now = new Date();
    var start = new Date(now.getFullYear(), 0, 0);
    var diff = now - start;
    var oneDay = 1000 * 60 * 60 * 24;
    return Math.floor(diff / oneDay);
}
dayOfYear
功能要感谢Alex Turpin