Функция Firebase для отметки времени последнего изменения запускается несколько раз - PullRequest
0 голосов
/ 19 мая 2018

У меня есть функция firebase для отметки времени элемента при его обновлении.Я видел другие примеры, где код застревает в бесконечном цикле, потому что метка времени для последнего обновления заставляет его запускаться снова, но я думал, что эту часть выяснили в моем коде ниже.Я считаю, что в какой-то момент это работало нормально, теперь, похоже, застрял в цикле обновления.Я что-то упустил?

exports.itemUpdate = functions.database.ref('/items/{id}').onUpdate((event) => {
    //dont mark updated timestamp if item is deleted
    if (!event.data.exists()) {
        return null;
    }
    //dont update if we are simply updating timestamp
    if (event.data.child('lastUpdated').changed()) {
        return null;
    }else{
        return admin.database().ref('/items/' + event.params.id + '/lastUpdated').set(admin.database.ServerValue.TIMESTAMP);
    }
});

Обратите внимание, это для бета-версии функций Firebase до v1.0.

1 Ответ

0 голосов
/ 19 мая 2018

Я полагаю, что ваш код не попадает в блок if, поскольку в dataSnapshot .

нет метода changed. Вы можете попробовать проверить, изменилось ли lastUpdatedс чем-то вроде этого:

const oldValue = event.data.previous.val();
const newValue = event.data.val();

if(oldValue.lastUpdated !== newValue.lastUpdated) {
  return null;
} else {
  return admin.database().ref('/items/' + event.params.id + '/lastUpdated').set(admin.database.ServerValue.TIMESTAMP);   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...