获取firebase数据库中新添加的子节点的事件

时间:2017-08-03 17:25:48

标签: javascript firebase firebase-realtime-database google-cloud-functions

我试图在参考路径上获取新添加的子节点的触发器,并获取新数据的值。但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,但结果仍然相同。

2 个答案:

答案 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()分别监视每个子级别的触发器,它仅返回我新加入的孩子。