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