Проверьте и сравните время сообщений в Firebase Swift - PullRequest
0 голосов
/ 23 ноября 2018

Я пытаюсь сделать приложение сообщений в Swift и использую Firebase в качестве базы данных.То, что я пытаюсь сделать, это иметь функцию исчезновения сообщений, как в Snapchat;Однако я не совсем уверен, как я должен к этому.У меня есть отметка времени сообщения в базе данных, но я не уверен, как ее использовать. Это - это то, что я пытаюсь сделать, я просто не знаю точный код для этого.

Вот изображение того, как выглядит моя структура базы данных.Дайте мне знать, если вам нужна дополнительная информация.Спасибо

Here

1 Ответ

0 голосов
/ 05 декабря 2018

Я бы предложил управлять вашими временными метками в 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();
            });

        });
    });
...