4

我正嘗試使用Firebase Cloud功能爲iOS應用程序創建設備到設備推送通知。我想要在引用'/ user-notifications/{notificationRecipientUid}/{challengeId}'時在數據庫中創建新子節點時觸發事件。這裏是我的index.js代碼:如何讀取Firebase Cloud Functions'index.js中的Firebase數據庫條目?

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

exports.sendWinLoseOrTieNotification = functions.database.ref('/user-notifications/{notificationRecipientUid}/{challengeId}').onWrite(event => { 
... 
const challengeId = event.params.challengeId; 

functions.database.ref('/challenges/' + challengeId).once('value').then(function(snapshot) { 
    const challengerUid = snapshot.val().challengerUid; 
    ... 
}); 
}); 

當一個新的孩子在數據庫在該位置加入,我得到這個錯誤,「類型錯誤:functions.database.ref(...)一次不一個功能「,在Firebase控制檯的功能日誌中。所以在網頁API上見參考文獻 沒有「曾經」方法,如:

firebase.database().ref('...').once('value').then(function(snapshot) { ... });

我的問題是:如何閱讀裏面index.js現有數據庫的價值?

回答

3

那麼,解決方案是使用管理,而不是火力,像這樣:

admin.database().ref('...').once('value').then(function(snapshot) { 
    ... 
}); 
+2

這樣做的原因是,在導入管理SDK一個const稱爲'admin':'常量管理=需要(」 firebase-admin')' –

+0

使用此代碼時出現錯誤500,並且我不知道如何調試.Webhook調用失敗。錯誤:500內部服務器錯誤 –

+0

@Waza_Be我不是一個web開發人員,但我認爲webhook是用於加載外部軟件包,如firebase-functions,節點郵件等等。您必須將它安裝到您的計算機中才能要求這樣的軟件包,如:const functions = require('firebase-functions'); 在這種情況下,您並未部署到您的計算機,而是安裝了所有WebHooks的Google服務器,因此您不會在此處發生此錯誤。 – naeemjawaid