0

私はFirebase function onWrite not being calledのような似たような質問を見て、それを参照するのは私のせいだと思っていましたが、ここで何が起きているのかわかりません。Firebase機能.onWriteが機能していませんか?

私は、データベースに書き込まれたときに自分のデータベースに書き込む関数を取得しようとしています。私は正確にfirebaseチュートリアルに従っ:

const functions = require('firebase-functions'); 

// The Firebase Admin SDK to access the Firebase Realtime Database. 
//https://firebase.google.com/docs/functions/database-events 

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

// const gl = require('getlocation'); 

exports.helloWorld = functions.https.onRequest((request, response) => { 
response.send("Hello from Firebase!"); 
}); 

exports.enterLocation = functions.database.ref('/Users/{name}') //brackets is client param 
    .onWrite(event => { 
     // Grab the current value of what was written to the Realtime Database. 
     // const original = event.data.val(); 
     console.log('SKYLAR HERE:', event.params.name); 
     // You must return a Promise when performing asynchronous tasks inside a Functions such as 

     return firebase.database().ref('/Users/{name}').set({ location: 'test loc' }); 
    }); 

機能が実行されている、まだ私のログに、私はそれが{名前}のparamを取得され、データは間違いなく私のデータベースに書き込まれていることはかなり役に立たないエラーを取得し、しかし、私のサーバーコードを書いていません。

enter image description here

を私が取得 - それが定義されているとしても意味がありません

ReferenceError: firebase is not defined at exports.enterLocation.functions.database.ref

。私は「パスワード」私が間違っているのは何

enter image description here

ですでにやるように私はちょうど、私が作成したユーザーで、余分な子を追加したいですか?これに代えて

答えて

1

2つの問題。まず、コードのどこにでもfirebaseを定義していません。代わりにadminを使用してAdmin SDKを使用するつもりだったと思います。

第2に、文字列に変数補間を行い、refの名前を作成しようとしているようです。あなたの構文は間違っています。私はあなたのコードの最後の行に代わりにこれを言うしようとしていると想像

return admin.database().ref(`/Users/${name}`).set({ location: 'test loc' }); 

は、文字列の引用符にバッククォートを注意してください。このJavaScriptシンタックスでは、${exp}を使用して、文字列内の一部の式の内容を挿入できます。

ここでもadmin SDKを使用する必要はありません。関数をトリガーしたのと同じ場所に書き戻そうとしているので、イベントオブジェクトから来た参照を使用することができます:

return event.data.adminRef.set({ location: 'test loc' }); 
+0

私が作成した既存の子を削除する理由は分かりますか、パスワード? – skyguy

+1

'set()'はすべての場所を置き換えます。 'update()'は与えられた値を既存のデータに加えます。 https://firebase.google.com/docs/reference/admin/node/admin.database.Reference#update –

1

return firebase.database().ref('/Users/{name}').set({ location: 'test loc' }); 

使用この:ここ

return admin.database().ref('/Users/{name}').set({ location: 'test loc' }); 
関連する問題