获取 firebase 数据库上新添加的子节点的事件
Get event for just newly added child node on firebase database
我正在尝试获取引用路径上新添加的子节点的触发器,并仅获取新数据的值。但是 event.data.val
returns 该引用路径中的所有值。
以下是我使用的云函数代码:
exports.sendOfferNotification = functions.database.ref('/Users/{uid}/offers/New').onWrite(event => {
// Only edit data when it is first created.
// if (event.data.previous.exists()) {
// return;
// }
// Exit when the data is deleted.
if (!event.data.exists()) {
return;
}
// Grab the current value of what was written to the Realtime Database.
const original = event.data.val();
console.log('New offer', event.params.uid, original);
});
我尝试使用 onUpdate
而不是 onWrite
,但结果仍然相同。
你可以试试这个:
exports.sendOfferNotification =
functions.database.ref('/Users/{uid}/offers/New/{values}') //notice this change
.onWrite(event => {
if (!event.data.exists()){return};
const original = event.params.values; //notice this change
console.log('New offer', event.params.uid, original);
});
在 New/
的嵌套级别上使用 onCreate()
解决了它
exports.sendNotificationForImportantOffers = functions.database.ref('/Users/{uid}/offers/New/Important/{values}').onCreate(event => {
// Only edit data when it is first created.
// if (event.data.previous.exists()) {
// return;
// }
// Exit when the data is deleted.
if (!event.data.exists()) {
return;
}
// Grab the current value of what was written to the Realtime Database.
const original = event.data.val();
console.log('New offer', event.params.uid, original);
});
最初,我试图用一个函数来监听 New/ path 下所有嵌套级别的变化,但现在我将不得不使用 onCreate()
分别监视每个 sub-level 的触发器其中 returns 我只有新添加的 child.
我正在尝试获取引用路径上新添加的子节点的触发器,并仅获取新数据的值。但是 event.data.val
returns 该引用路径中的所有值。
以下是我使用的云函数代码:
exports.sendOfferNotification = functions.database.ref('/Users/{uid}/offers/New').onWrite(event => {
// Only edit data when it is first created.
// if (event.data.previous.exists()) {
// return;
// }
// Exit when the data is deleted.
if (!event.data.exists()) {
return;
}
// Grab the current value of what was written to the Realtime Database.
const original = event.data.val();
console.log('New offer', event.params.uid, original);
});
我尝试使用 onUpdate
而不是 onWrite
,但结果仍然相同。
你可以试试这个:
exports.sendOfferNotification =
functions.database.ref('/Users/{uid}/offers/New/{values}') //notice this change
.onWrite(event => {
if (!event.data.exists()){return};
const original = event.params.values; //notice this change
console.log('New offer', event.params.uid, original);
});
在 New/
的嵌套级别上使用onCreate()
解决了它
exports.sendNotificationForImportantOffers = functions.database.ref('/Users/{uid}/offers/New/Important/{values}').onCreate(event => {
// Only edit data when it is first created.
// if (event.data.previous.exists()) {
// return;
// }
// Exit when the data is deleted.
if (!event.data.exists()) {
return;
}
// Grab the current value of what was written to the Realtime Database.
const original = event.data.val();
console.log('New offer', event.params.uid, original);
});
最初,我试图用一个函数来监听 New/ path 下所有嵌套级别的变化,但现在我将不得不使用 onCreate()
分别监视每个 sub-level 的触发器其中 returns 我只有新添加的 child.