如何使用新的Firebase云功能读取数据?

时间:2017-04-04 20:45:53

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

我处于需要使用“cron”作业阅读Firebase实时数据库的情况。

我分析并使用this存储库,但我似乎无法理解如何简单地检索实时数据库中所有用户或所有数据的列表。 functions.database.ref的唯一功能是onWrite,这对我没有帮助。

我知道云功能是面向事件的,它们是为响应某些触发器而编写的,但就我here而言,这并非不可能,我们显然可以访问数据。 在他们的“删除帐户”示例中,他们使用了这个:

https://www.googleapis.com/identitytoolkit/v3/relyingparty/downloadAccount?fields=users/localId,users/lastLoginAt,nextPageToken&access_token=

它似乎完全无证,完全没有解释。为什么我们必须使用身份工具包?我怎么能简单地读取数据?我到目前为止试图做的事情:

  • 使用functions.database.ref('users').once('value', function(snapshot){})但无效
  • 使用他们的cron作业示例代码(身份工具包),但我在Firebase的日志中得到了一个非常奇怪的回复:Missing required header: Metadata-Flavor以及下面跟踪的其余部分:

3]

1 个答案:

答案 0 :(得分:3)

您无法使用functions.database.ref()来阅读数据。这仅用于指定要更改数据库以触发功能的路径。要编写类似cron的函数,您不会编写数据库触发器。您可能需要HTTP触发器,如sample code所示。您使用第三方调度程序触发HTTP功能,如自述文件中所述。

要从该函数中的数据库中读取数据,您应该使用admin SDK,如该代码示例所示。它在这里初始化,并出现在许多其他代码示例中:

const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);

然后您可以获得对数据库的引用:

const ref = admin.database().ref(`/path/to/data`);

ref这里是一个Reference对象。你可以read data with that。请务必查看其他代码示例 - 其中许多代码都使用admin SDK读取数据库。