如果我的语法不正确,请提前道歉,因为我是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"}
非常感谢任何破译我的问题的帮助。
功能日志
实时数据库
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 }
答案 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
});
})
}