Firebase功能HTTP触发器 - 错误:无法处理请求 - Firebase未定义

时间:2017-11-24 20:03:26

标签: node.js firebase-realtime-database google-cloud-functions

如果我的语法不正确,请提前道歉,因为我是Firebase(以及node.js)的新手。

使用HTTP触发器,我试图将“奖励”数据作为我的实时数据库中的对象。但是,根据我的设置,当我执行从firebase deploy收到的URL时,我收到以下错误。

  

错误:无法处理请求

here所述,我确实将firebase更改为admin,但未解决此问题。

另外我认为.catch()方法至少可以让我理解问题是什么而不仅仅是告诉我'错误'。

我希望最终结果是:

{"create_your_own":"false","first_time":"true","five_in_a_row":"true", "share_with_friend": "false"}

非常感谢任何破译我的问题的帮助。

功能日志

enter image description here

实时数据库

fir-db-test-mike
 |
 |__awards
 |   |
 |   |__user01
 |   |   |
 |   |   |__create_your_own: false
 |   |   |__first_time: true
 |   |   |__five_in_a_row: true
 |   |   |__share_with_friend: false
 |   |
 |   |
 |   |__user02
 |       |
 |       |__create_your_own: false
 |       |__first_time: false
 |       |__five_in_a_row: false
 |       |__share_with_friend: false

index.js

const functions = require('firebase-functions');
require('./src/grabData')(module.exports);

grabData.js

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

26 module.exports = (event) => {
27   event.grabAwards = functions.https.onRequest((request, response) => {
28     firebase.database().ref('/awards/{pushId}').once('value')
       .then(function(snapshot) {
29       var awards = snapshot.val();
30       res.status(200).send(awards);
31       }).catch(error => {
32       this.errorMessage = 'Error - ' + error.message
33     });
34   })
35 }

1 个答案:

答案 0 :(得分:1)

您没有导入任何名为firebase的模块。而是将Firebase Admin SDK导入为admin。所以你要使用admin.database()

const functions = require('firebase-functions')
const admin = require('firebase-admin') // name used here
admin.initializeApp(functions.config().firebase)

module.exports = (event) => {
  event.grabAwards = functions.https.onRequest((request, response) => {
    admin.database().ref('/awards/{pushId}').once('value') // must match name used here
      .then(function(snapshot) {
        var awards = snapshot.val();
        res.status(200).send(awards);
      }).catch(error => {
        this.errorMessage = 'Error - ' + error.message
      });
  })
}