获取 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.