Firebase Cloud Functions мгновенно удаляет узлы вместо удаления через 2 часа - PullRequest
0 голосов
/ 14 мая 2019

Я использую облачные функции для удаления узлов через 2 часа на firebase. Однако, когда я добавляю узел, он удаляется, как только он создается внутри базы данных

Мой index.js:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

const CUT_OFF_TIME = 2 * 60 * 60 * 1000; // 2 Hours in milliseconds
exports.deleteOldItems = functions.database.ref('/posts/{randomID1}/{randomID2}/timestamp')
.onWrite(function(change) {
    var ref = change.after.ref.parent; // reference to the parent
    var now = Date.now();
    var cutoff = now - CUT_OFF_TIME;
    var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff);
    return oldItemsQuery.once('value').then(function(snapshot) {
      // create a map with all children that need to be removed
      var updates = {};
      snapshot.forEach(function(child) {
        updates[child.key] = null;
      });
      // execute all updates in one go and return the result to end the function
      return ref.update(updates);
    });
  });

Моя база данных:

  "posts" : {
    "randomID1" : {
      "randomID2" : {
        "timestamp" : 1557842159
      }
    },
    "randomID3" : {
      "randomID4" : {
        "timestamp" : 1557842203
      }
    },

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Вы сравниваете метку времени в миллисекундах с меткой времени в секундах.

var cutoff = now - CUT_OFF_TIME; - значение отсечения указывается в миллисекундах

Вам необходимо изменить CUT_OFF_TIME и преобразовать Date.now() всекунд.

1 голос
/ 14 мая 2019

Ваши метки времени хранятся в секундах, а не в миллисекундах.Поскольку в вашем коде используется Date.now, который возвращает отметку времени в миллисекундах, вы сравниваете значения, отключенные в 1000 раз.

Самое простое решение:

const CUT_OFF_TIME = 2 * 60 * 60; // 2 Hours in seconds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...