【问题标题】:ios Swift Program app to delete things from parse after x amount of time?ios Swift程序应用程序在x时间后从解析中删除内容?
【发布时间】:2016-06-02 03:39:53
【问题描述】:
我正在使用 parse 和 swift 创建一个 ios 应用程序。我希望用户发布在 x 时间后从服务器中删除自己。是否有可能做到这一点 ?
类似于 24 小时后 snapchat 故事消失的方式。
我想在应用程序中,我只会让帖子只有在规定的时间范围内发布时才可见。这会阻止人们看到旧帖子。我知道我需要一个叫做云代码的东西来删除帖子。这是正确的吗?我该怎么做?
【问题讨论】:
标签:
ios
swift
parse-platform
【解决方案1】:
您可以通过查询,获取解析对象的createdAt日期并与当前时间进行比较,如果过期则删除。
无论在何处检索数据,如果它们是用户帖子,您可以将查询放在加载用户帖子的任何位置。一旦任何人尝试加载该数据并且它太旧,它将被删除并且没有人会看到它。
【解决方案2】:
最好的方法是使用 Cloud Jobs。
有时你想执行长时间运行的函数,但你没有
想等待回复。 Cloud Jobs 就是为此而生的。阅读更多 [https://docs.parseplatform.org/cloudcode/guide/#cloud-jobs]
例子:
// REMOVE A MOMENT VIDEO AFTER 24 HOURS
Parse.Cloud.job("remove", function (request, status) {
var date = new Date();
var timeNow = date.getTime();
var intervalOfTime = 1*24*60*60*1000; // 24 hours in milliseconds
var timeThen = timeNow - intervalOfTime;
// Limit date
var queryDate = new Date();
queryDate.setTime(timeThen);
// Query Moments
var query = new Parse.Query("Moments");
// Query the Moments after 24 hours
query.lessThanOrEqualTo("createdAt", queryDate);
query.find({
success: function (results) {
console.log("Moments: " + results.length);
// Delete Moment
query.each(function (object, err) {
object.destroy({
success: function (object) {
console.log("Successfully deleted: " + object.objectId);
},
error: function (error) {
console.log("Error: " + error.code + " - " + error.message);
},useMasterKey: true
})
})
},
error: function (error) {
console.log("Error: " + error.code + " - " + error.message);
}
});
});