1

Fire Base用のクラウドファンクションを使用していますが、非常に基本的な操作であると思われます。Firebaseのクラウドファンクションでノード間でオブジェクトをコピー

誰かが投稿を追加した場合、彼は/posts/に書き込みます。その投稿の一部をpublic-postsまたはprivate-postsという別のノードの下に保存し、最初の投稿で使用したものと同じキーを使用したいと思います。

私のコードは、この

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

exports.copyPost = functions.database 
    .ref('/posts/{pushId}') 
    .onWrite(event => { 
    const post = event.data.val(); 
    const smallPost = (({ name, descr }) => ({ name, descr }))(post); 
    if (post.isPublic) { 
     return functions.database.ref('/public-posts/' + event.params.pushId) 
     .set(smallPost); 
    } else { 
     return functions.database.ref('/private-posts/' + event.params.pushId) 
     .set(smallPost); 
    } 
    }) 

のように見える私が取得エラーメッセージは次のとおりです。functions.database.ref(...)セットが機能ではありません。

私は間違っていますか?

+0

私は複数の機能を使用しましたか?これを今すぐテストしよう... – Sventies

+0

ああ待たずに、私はデータベース()を呼び出す必要がありますか? "関数"はまだ "関数"でなければなりません。 – Sventies

答えて

3

データベーストリガでデータベースを変更する場合は、Admin SDKを使用するか、イベントで指定した参照を使用して関連ノードへの参照を検索する必要があります。 (functions.databaseを使用して参照を検索することはできません - これはトリガーの登録に使用されます)。

最も簡単な方法は、あなたが書きたい場所への参照を見つけることがevent.data.refdoc)を使用することはおそらくです:どこがいけない

const root = event.data.ref.root 
const pubPost = root.child('public-posts') 
+0

驚くばかりです。本当にありがとう! – Sventies

関連する問題