2017-05-04 82 views
3

是否存在直接引用数据库触发器上方节点的数据值的干净内置方法?我明白我可以得到一个家长裁判,然后我可以查询价值,但如果有一个更简洁的方式,这将是非常感谢。Firebase的云端函数 - 从数据库触发器获取父数据

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

const parentObject = { 
triggerValue: 'I want the function to be triggered only on writes to this path', 
parentValue: 'But I also want this value', 
} 

感谢

回答

2

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

+0

OK感谢。我只是很好奇,事件对象中的数据是否已经存在,其方式与event.data.val()相同,并且不需要异步读取,但这很好,它不适合于是。谢谢 –

+1

我明白了,是的,事件只包含匹配路径上的数据而没有其他数据。这可能是不必要的成本。 –

+0

是有道理的。谢谢 –

5

我已经像这样回答了6次,并不断重新实施解决方案。

下面是如何获取父数据,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 
    }); 
    }); 
+0

同样在这里。你从这篇文章是正确的。谢谢。 https://stackoverflow.com/questions/43988494/cloud-functions-for-firebase-how-to-get-event-data-ref-parent-childxxx-val – vzhen

相关问题