【问题标题】:Firebase Cloud Function: Generate snapshot after specified intervalFirebase Cloud Function:在指定时间间隔后生成快照
【发布时间】:2018-07-03 10:37:26
【问题描述】:

我正在编写一个在实时数据库中触发 onWrite 事件的云函数。但是,我想保持函数的执行几秒钟,然后检查一些变量的值。但是,我将在函数开始运行的那一刻收到快照,对吗?有什么方法可以让系统在触发后等待,然后在 3 秒后(比如说)从我的数据库中获取数据值并根据需要进行处理?或者无论如何我可以在 3 秒后重新生成一个新的快照并使用它?

【问题讨论】:

  • 如何获取当前值的答案如下。但这听起来像XY problem,所以我不确定这个答案是否能解决你的根本问题。

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


【解决方案1】:

传递给函数的快照包含触发函数时存在的值。

如果你想在几秒后得到当前值,你可以加载它:

snapshot.ref.once("value").then((newSnapshot) => {
  ... in here you can check newSnapshot.val()
})

【讨论】:

  • 参数“value”代表什么?另外,要获取父级的快照,我应该将其加载为 snapshot.ref.parent.once(...)... 对吗?或者还有其他方法吗?
  • "value" 是您可以监听的事件类型之一。这是一个相当基本的 Firebase 数据库操作,所以我建议您在 firebase.google.com/docs/database/web/read-and-write 上查看它。
  • 我照你说的做了。我实现了这个: var number; snapshot.after.ref.parent.once('value').then((newSnapshot) => { number = newSnapshot.child('phone_number').val(); });控制台.log(数字);但是,我得到的数字始终是未定义的。这是为什么?如果我将日志语句放在 then(...) 中,我会得到正确的答案。
  • 这是因为数据是异步加载的。 newSnapshot 的值仅在回调内部可用。
  • 是的,但是我正在提取 phone_number 的值并将其传递给名为 number 的外部变量,对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 2019-06-28
  • 2018-10-16
  • 1970-01-01
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多