Firebase的云功能 - 从数据库触发器获取父数据

Sam*_*ews 6 firebase firebase-realtime-database google-cloud-functions

是否有一种干净的内置方式直接引用数据库触发器上方节点的数据值?我知道我可以得到一个父参考,然后我可以查询该值,但如果有一个更简洁的方式这样做,这将是非常感谢.

为清楚起见,我想在对象中使用子节点作为触发器,并在发生时直接获取父对象的值,以避免在对父对象进行其他更改时调用该函数,如下所示:

const parentObject = {
 triggerValue: 'I want the function to be triggered only on writes to this path',
 parentValue: 'But I also want this value',
}
Run Code Online (Sandbox Code Playgroud)

谢谢

cge*_*nco 7

我已经五次搜索这个答案并继续重新实施解决方案.

以下是如何post从子属性post.body中获取已更改的父数据:

exports.doStuff = functions.database
  .ref("/posts/{postId}/body")
  .onWrite(event => {
    return event.data.ref.parent.once("value").then(snap => {
      const post = snap.val();
      // do stuff with post here
    });
  });
Run Code Online (Sandbox Code Playgroud)


Dou*_*son 1

您可以使用event.data.refevent.data.adminRef来浏览数据库。它们是引用对象,其工作方式与您在客户端使用 Firebase 构建 Web 应用程序时的工作方式完全相同。因此,如果使用属性向上导航级别对您来说效果很好,那么就使用它吧。没有额外的特殊语法。