【问题标题】:running queries in firebase using async / await使用 async / await 在 firebase 中运行查询
【发布时间】:2017-09-28 11:48:00
【问题描述】:

感谢 firebase 有 added support for promises,有没有办法在 async 函数内运行如下查询?:

const eventref = this.db.ref('cats/whiskers');
const value = await eventref.once('value')

运行上面的代码返回一个value的承诺,我希望得到存储在cats/whiskers的json blob。

【问题讨论】:

  • 是的,为什么不可能呢?你试过了吗?你有问题吗?
  • 如前所述,上面返回的是一个承诺而不是一个值。
  • 嗯,这应该是不可能的,await 不能返回 thenables。你使用转译器吗?你检查过eventref.once('value') 在调试器中的样子吗?
  • 是的,出于某种原因,我在 await 语句中坚持使用 .val() 调用,这也对我有用。

标签: node.js firebase ecmascript-2017


【解决方案1】:

value 的结果是一个快照,我们需要多 1 步才能得到值。这应该是这样的:

const eventref = this.db.ref('cats/whiskers');
const snapshot = await eventref.once('value');
const value = snapshot.val();

【讨论】:

  • 完全救了我!
  • 如果您之后需要使用该值怎么办,这会告诉您的代码等待value 被分配一些东西,然后再继续吗?
  • @Badrush value 事件可用于使用 once 检索数据库中特定节点的当前值,或者可用于使用 @ 订阅数据库中特定节点上的更改987654327@.
  • @Badrush 你可以使用 await: var A = await eventref.once('value'); 因为你所说的正是await 所做的。
猜你喜欢
  • 1970-01-01
  • 2022-01-11
  • 2019-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多