Функции Firebase v 1.0: альтернатива DeltaSnapshot.changed () после v 1.0 - PullRequest
0 голосов
/ 25 мая 2018

До версии 1.0 я использовал DeltaSnapshot.changed(), чтобы проверить в моих функциях базы данных, изменяются ли данные под входящими данными.Но теперь после обновления до версии 1.0 метод больше не доступен.Есть ли другой способ повторить эту функциональность?

Одним из способов является использование before и after и дочерних элементов цикла под узлом, которые мне нужно проверить на наличие изменений.Есть ли лучший способ выполнить эту операцию?

Ответы [ 3 ]

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

Вам действительно нужно сравнить данные до и после, чтобы увидеть, что изменилось.

if (change.after.val().valToCompare !== change.before.val().valToCompare) {
    << your code here >>
}
0 голосов
/ 25 мая 2018

Как уже упоминалось в другом ответе, нам нужно создать наш собственный метод, чтобы иметь функциональность измененной проверки.Итак, здесь есть помощник для сравнения объектов с данным относительным путем (не абсолютным путем от root /) в данных события.

'use strict';
let _ = require('lodash');

/**
 *
 * @param data Change<DataSnapshot> object received in the event.
 * @param path Relative path in the data object received in the function.
 * @returns {boolean} return true if there is a change in data of before and
 * after snapshot , false if the values are identical
 */
function isChanged(data, path) {
    let before = data.before.child(path);
    let after = data.after.child(path);
    if (before.exists() && !after.exists() ||
        !before.exists() && after.exists()) {
        return true;
    }
    else {
        return !_.isEqual(before.val(), after.val());
    }
}


module.exports = {
    isChanged
};
0 голосов
/ 25 мая 2018

Нет лучшего способа.Поля before и after являются единственным показателем того, что изменилось во время событий записи или обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...