您如何知道数据是否未更改以及Firebase Cloud功能中的新增功能?我已经尝试了几种不同的选项来标记,如果数据刚刚更改,那么我不会发送推送通知。另外我试图从快照中获得_newData 和_data子节点比较的数量,如果__newData更大,那么这是一个新的记录,但它不起作用。请告诉我怎么做。如何了解Firebase云端功能中的新数据?
示例代码片段。
module.exports = functions.database.ref('/userListEvents/{userID}')
.onWrite(event => {
const snapshot = event.data;
if (event.data.val() && !event.data.previous.val()) {
console.log('send push notification');
} else if (snapshot._data) {
console.log('send push notification');
} else {
return console.log('data was removed');
};
}
参考
functions.database.ref('/cards/{cardID}/interestedUsers')
.onWrite(event => {
更新:此选项不为我工作,因为如果我这样做如functions.database.ref ('/ userListEvents/{userID}/{eventID}')
,则错误报道,该字段不能为空。
我试过了,但没有得到好的结果。
if (event.data.val() && !event.data.previous.val()) {
console.log('send push notification');
} else if (event.data.val() && event.data.previous.val()) {
const newData = event.data.val();
const previousData = event.data.previous.val();
console.log('newData', newData, 'previousData', previousData);
const newDataKeys = Object.keys(newData);
const previousDataKeys = Object.keys(previousData);
if (newDataKeys.length > previousDataKeys.length) {
console.log('send push', newDataKeys.length, previousDataKeys.length);
} else {
return console.log('just update data', newDataKeys.length, previousDataKeys.length);
}
} else {
return console.log('removed data')
}
请告诉我,你可以使用两个动态键例如functions.database.ref('/ userListEvents/{userID}/{requestID}')? – Alexander
@Alexsander:是的,允许多个键。 –