gpt4 book ai didi

parse-platform - 为 parse.com 后台作业实现超过一天的重复间隔

转载 作者:行者123 更新时间:2023-12-04 08:26:25 25 4
gpt4 key购买 nike

我创建了一个这样的后台作业:

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 次不执行任何操作。那些无所事事的运行将是浪费,但从微观上看是这样,无论如何,解析正在支付账单。

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

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

此外,重要的是,在我看来,您的意图是找到几个需要删除的对象,然后删除它们。发布的逻辑并不能完全做到这一点。我已经修复了逻辑错误并清理了 promise 处理......

// 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,here

关于parse-platform - 为 parse.com 后台作业实现超过一天的重复间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34620395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com