用于Firebase写入操作的云函数在DB事件函数

时间:2017-04-04 13:03:16

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

我目前正在尝试学习Firebase功能。 这个新功能似乎非常强大和有用。

我想使用一个函数捕获一个DB编写事件,与DB中的特定位置进行比较,然后在DB中的另一个位置写一些数据(取决于比较结果)。

这是我当前的Node.js代码:

exports.verificaFineLavoro = functions.database.ref('/Aziende/{nomeazienda}/LogAsegno/{pushidbracciante}/{pushidlog}/Asegno')
.onWrite(event => {
  const original = event.data.val();
  console.log('VerificaFineLavoro', event.params.pushId, original);
  const aSegno = original;
  console.log('aSegno', aSegno +"");
  const FineLavoro = ref.parent.parent.parent.parent.child("Asegno/"+aSegno+"/FineLavoro");
  return event.data.ref.child('FL').set(FineLavoro);
});

目前该函数已被触发但由于可能错误的引用而停止工作。

1 个答案:

答案 0 :(得分:4)

Cloud Functions for Firebase documentation on triggering from the database包含显示如何访问数据库中其他节点的代码段。

例如,此代码段将值设置为触发该函数的节点的兄弟:

return event.data.ref.parent.child('uppercase').set(uppercase);

以下是sample on counting child nodes的另一个片段:

exports.countlikechange = 
functions.database.ref('/posts/{postid}/likes/{likeid}').onWrite(event => {
  const collectionRef = event.data.ref.parent;
  const countRef = collectionRef.parent.child('likes_count');
  ...

要访问数据库的根目录,请使用event.data.ref.root(使用触发该功能的用户的权限访问根节点)或event.data.adminRef.root(以完全管理权限访问root用户)。