gpt4 book ai didi

node.js - 如何知道 Firebase 云函数中的新数据?

转载 作者:搜寻专家 更新时间:2023-11-01 00:29:15 25 4
gpt4 key购买 nike

您如何知道数据是否未发生变化以及 Firebase 云函数中有哪些新功能?我已经尝试了几种不同的选项来标记如果数据刚刚更改,那么我不会发送推送通知。我也尝试从快照 _newData 中获取和_data子 Node 比较个数,如果__newData更大,那么这是一条新记录,但是没有成功。请告诉我如何做到这一点。

一段示例代码。

   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')
}

最佳答案

您需要使用 event.data.current.val() 而不是 event.data.val() 进行比较。示例:

exports.detectChange = functions.database.ref('/userListEvents/{userID}')
.onWrite(event => {
const crnt = event.data.current;
const prev = event.data.previous;

if (crnt.val() && !prev.val()) {
// value created
console.log('Created: send push notification');
} else if (!crnt.val() && prev.val()) {
// value removed
console.log('Removed: send push notification');
} else {
// value updated
console.log('Updated');
}
});

关于node.js - 如何知道 Firebase 云函数中的新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44047431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com