ユーザーが好きな投稿のIDがすべて格納されているノードがあるとします(/ users/$ uid/favorites/$ postid)。したがって、私のViewControllerでは、/ users/$ uid/favorites/nodeを観察して、好きなポストIDをすべて取得してから、ポストオブジェクトを繰り返し取得します。Firebase .valueオブザーバは、refが存在しないが、後で存在するかどうかを聞きません。
ユーザーにお気に入りがない場合、「お気に入り」ノードはまだ存在しません。この状態で.valueイベントオブザーバを接続すると、後でユーザーがポストをお気に入りにしたとき(つまり、 'お気に入り' refが存在するとき)には決して起動しません。.childAddedオブザーバを使用するとこの問題は発生しません。
これはまた、1は.childAddedオブザーバを使用するために私を必要としないもちろんの回避策...が、ありますか?バグまたは特定のデザイン機能です。ありがとうございました。
Firebaseの値観測者は、現在のvaその場所の騒ぎ。価値がない場合、すぐに空のスナップショットで起動します。そうでない場合は、[動作を再現する最小限のコード]を共有してください(http://stackoverflow.com/help/mcve)。 –
@フランク、私は問題を解決した、それはノードの観察を妨げていたいくつかの奇妙なセキュリティルールの副作用だった。私はクライアント側でこの問題と戦うのに多くの時間を費やしてきましたが、これについても考えていませんでした。 「行動を再現する最小限のコード」を表示するために、最小限のノード構造でクリーンなfirebaseプロジェクトを開始し、問題は発生しませんでした。次に、2つのプロジェクトを「比較」し、唯一の違いがセキュリティルールであることを発見しました。私は現在のプロジェクトのルールを変更しましたが、現在の.valueイベントリスニングは期待通りに機能します。 – eyeezzi
参照.... MCVEを作成すると、しばしば自分の問題を見つけるのに役立ちます。よくできました! –