2017-05-04 14 views
3

データベーストリガーの上にあるノードのデータ値を直接参照するクリーンな方法が組み込まれていますか?私は私が値を問い合わせることができる親のrefを得ることができると理解していますが、これを行うより簡潔な方法があれば、それは大きな感謝の意を表します。Firebaseのクラウド機能 - データベーストリガーから親データを取得

わかりやすくするために、オブジェクト内の子ノードをトリガーとして使用したい場合は、親オブジェクトの値を直接取得して、親オブジェクトに他の変更が加えられたときに関数が呼び出されないようにしますそう:

const parentObject = { 
triggerValue: 'I want the function to be triggered only on writes to this path', 
parentValue: 'But I also want this value', 
} 

おかげ

答えて

2

データベースをナビゲートするevent.data.refevent.data.adminRefを使用することができます。彼らはReferenceオブジェクトで、クライアント側にFirebaseを使ってWebアプリケーションを構築していた場合とまったく同じように動作します。したがって、レベルを上に移動するためにparentプロパティを使用する場合は、あなたのためにうまく動作し、それを使用してください。特別な構文はありません。

+0

OK感謝。私は、event.data.val()が非同期の読み込みを必要としないのと同じ方法で、そのデータがイベントオブジェクトに既に存在しているかどうかを知りたいだけでしたが、それは意味がありません。さあ。ありがとう –

+1

私は、ええ、イベントは、その上に何も一致したパスのデータが含まれて参照してください。それは不必要にコストがかかる可能性があります。 –

+0

はい良い意味合いがあります。ありがとう –

5

私は6回のようにこの回答を求めており、ソリューションを再実装する必要はありません。

はここで、それが変わったの子属性、post.bodyから、親データ、postを取得する方法は次のとおりです。

exports.doStuff = functions.database 
    .ref("/posts/{postId}/body") 
    .onWrite(event => { 
    return event.data.ref.parent.once("value").then(snap => { 
     const post = snap.val(); 
     // do stuff with post here 
    }); 
    }); 
+0

同じです。あなたはこの投稿から正しいです。ありがとうございました。 https://stackoverflow.com/questions/43988494/cloud-functions-for-firebase-how-to-get-event-data-ref-parent-childxxx-val – vzhen

関連する問題