在firebase数据库中获取新添加的子节点的事件
问题描述:
我试图在引用路径上获取新添加的子节点的触发器并获取新数据的值。但是event.data.val
返回该参考路径中的所有值。在firebase数据库中获取新添加的子节点的事件
以下是我使用的云功能代码:
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.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);
});
使用onCreate()
初步解决,我想有一个单一的功能来听在新建/路径下的所有嵌套级别发生更改,但是现在我必须分别使用onCreate()
单独监视每个子级别的触发器,它仅返回新添加的子级。
答
你能分享你的数据库吗?它应该工作,我想,也许你可以试试这个:
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);
});
+0
的数据,以帮助您获得{values}的方法,但我还有一个子层,需要使用onCreate( )而不是onWrite()。所以,我在下面发布了我的答案。 –
onWrite()数据库触发器将始终在ref()中指定的位置接收所有数据,只要该位置下的任何内容发生更改。 –
雅,我同意但onUpdate()也表现相同。有关我如何只能获得新增数据的任何想法?例如,如果有4个优惠已经在/ New下,并且第5个优惠已经添加,我想要检索第5个 –