在版本 1.0 之前,我使用 DeltaSnapshot.changed() 来检查我的数据库函数,传入数据下的数据是否发生更改。 但现在升级到1.0版本后,该方法不再可用。 有没有其他方法可以复制此功能?
一种方法是使用 before
和 after
以及我需要检查更改的节点下的循环子节点。
有没有更好的方法来执行此操作?
最佳答案
正如其他答案中提到的,我们需要创建自己的方法来具有更改检查的功能。因此,这里有一个帮助器,用于事件数据中给定相对路径(不是来自根/的绝对路径)的对象比较。
'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
};
关于Firebase 函数 v 1.0 : Alternative of DeltaSnapshot. 在 v 1.0 后更改了(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50523581/