我试图在参考路径上获取新添加的子节点的触发器,并获取新数据的值。但event.data.val
返回该引用路径中的所有值。
以下是我正在使用的云功能代码:
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
,但结果仍然相同。
答案 0 :(得分:3)
你能分享你的数据库吗?它应该工作我想,也许你可以试试这个:
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);
});
答案 1 :(得分:0)
在嵌套级别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()
分别监视每个子级别的触发器,它仅返回我新加入的孩子。