【问题标题】:Cloud Functions for Firebase write operation inside a DB event function数据库事件函数内用于 Firebase 写入操作的 Cloud Functions
【发布时间】:2017-04-04 13:03:15
【问题描述】:

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

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

这是我当前的 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);
});

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

【问题讨论】:

  • 如果您已经知道您的参考文献是错误的,那么是什么让您无法修复它们?
  • 我不知道如何在函数内部进行引用以及如何从中检索数据。我发布的代码是一个尝试。

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


【解决方案1】:

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

例如,这个 sn-p 将一个值设置为触发该函数的节点的兄弟节点:

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

这是来自sample on counting child nodes的另一个sn-p:

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(以完全管理权限访问根节点)。

【讨论】:

  • 谢谢,我现在就去试试 ;)
  • 如何从我的数据库的根目录构建引用?
  • event.data.ref.root 或 event.data.adminRef.root
  • @L.Gangemi 您也可以执行 admin.database().ref('path/to/ref') 来引用其他路径。
  • 我可以按顺序使用更多的 .parent 吗?我想获取事件引用并在开始时返回一个节点
猜你喜欢
  • 2018-06-22
  • 1970-01-01
  • 2017-10-26
  • 2017-11-12
  • 2020-09-01
  • 2018-01-24
  • 2017-10-27
  • 1970-01-01
  • 2017-08-03
相关资源
最近更新 更多