Я бы предложил управлять вашими временными метками в Firebase по метрике миллисекунд с 1 января 1970 года , используя NSDate().timeIntervalSince1970 * 1000
в Swift и затем Date().getTime();
в вашей работе cron, написанной на JavaScript.Вы можете хранить let date = Int64(NSDate().timeIntervalSince1970 * 1000)
под вашим date
узлом в базе данных Firebase для каждого из ваших постов при их создании.Затем вы можете создать задание cron, используя Firebase Functions и Google Cloud, который запускается каждый час, запрашивая сообщения и удаляя сообщения с отметками времени date
, превышающими дневную.
Вот отличное руководство по началу работы с cron: https://firebase.googleblog.com/2017/03/how-to-schedule-cron-jobs-with-cloud.html
Ваша задача cron должна быть закодирована в node.js
и будет выглядеть примерно так:
// example cron job after setting everything up in the tutorial
exports.hourly_job =
functions.pubsub.topic('hourly-tick').onPublish((event) => {
// get current date and time
var currentDate = new Date();
console.log("Hourly Deletion Ran at: " + currentDate);
var currentNumMilliseconds = currentDate.getTime();
// remove a days worth of time
var oneDayAgo = currentNumMilliseconds - (3 * 24 * 60 * 1000);
var cutoffDate = new Date(oneDayAgo);
console.log("Query start at date: " + oneDayAgo);
// the firebase database ref where your posts are stored
const ref = admin.database().ref('posts');
// query all posts more than a day old
ref.orderByChild('date').startAt(oneDayAgo).once('value').then(function (snapshot) {
// for each snapshot returned from the query that is older than one day, delete
snapshot.forEach(function(childSnapshot) {
var key = childSnapshot.key;
var postObject = childSnapshot.val();
ref.child('key').remove();
});
});
});