【问题标题】:Firebase function access not related data [duplicate]Firebase函数访问不相关的数据[重复]
【发布时间】:2017-09-24 22:02:52
【问题描述】:

我正在寻找一种方法,当我可以访问与 firebase 函数中的触发器数据无关的数据库元素时。 正如我所见,我可以在其他元素上设置(...)东西,但不幸的是我不能只从元素中读取值,例如这不起作用:

event.data.adminRef.root.child('bettings/'+matchId+'/begin_at').val()

我知道获取这些东西的“正确方法”,例如:

var match = event.data.adminRef.root.child('bettings/' + matchId + '/begin_at');
match.once('value',function(snapshot){
    var alma = snapshot.val();
    console.log('alma val');
    console.log(alma);
});

但我希望有一种更好/更简单的方法,然后在我需要超出当前范围的东西时编写这样的代码。

更新:它不是 How to read any data from database on its write trigger on one of its child in firebase functions? 的副本! 我知道 ....once(..),并且我可以通过 Promise 访问这些值,但我需要一种更快的方法,因为有时它需要大约 10 秒,这真的很慢而且用户不会得到及时响应!

【问题讨论】:

  • 您问题中的附加信息虽然很有价值,但与最初的问题无关。您说 我不能只从元素中读取值 并且链接的帖子是重复的。如果存在性能问题,那将是一个非常不同的问题。附带说明一下,如果您的 Firebase 读取需要 10 秒,那么您的原因很可能与 Firebase 无关。

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


【解决方案1】:

这是一个示例,您从特定数据库节点访问数据并使用值 jobowner 执行任务:

let jobRef = admin.database().ref(`/jobs/${jobid}`);
const jo = jobRef.child("owner").once('value');
return Promise.all([jo]).then(r => {
  const jobowner = r[0];
  const promises = [];
  let key = admin.database().ref(`/jobowners/${jobowner}`).set({
    value: 'test',
    other: false
  });
  promises.push(room);
  return Promise.all(promises);
}); 

【讨论】:

  • 感谢您的回答,但您仍然使用 .once 和承诺......这里的问题是速度,因为有时等待这个承诺,一次和任何事情大约需要 10 秒......这是对我来说太慢了。
猜你喜欢
  • 1970-01-01
  • 2017-01-01
  • 1970-01-01
  • 2017-05-24
  • 2017-09-24
  • 2017-06-09
  • 1970-01-01
  • 2020-11-03
  • 1970-01-01
相关资源
最近更新 更多