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

时间:2017-05-04 13:49:14

标签: 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',
}

由于

2 个答案:

答案 0 :(得分: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
    });
  });

答案 1 :(得分:1)

您可以使用event.data.refevent.data.adminRef来导航数据库。它们是Reference个对象,其工作方式与在客户端使用Firebase构建Web应用程序时的工作方式完全相同。因此,如果使用parent属性导航一个级别可以正常工作,那么就使用它。没有其他特殊语法。