2016-05-21 4 views
1

私はFirebaseに2つの異なる配列を持っています:最初は "一般的な投稿"で、2番目は "お気に入りの投稿"です。Angularfire - 配列内のすべてのオブジェクトの一意のIDを取得する

お気に入りの投稿をしたい場合は、この一般的な投稿のすべてのデータを同じIDの「お気に入りの投稿」にコピーします。

投稿名が変更された場合、「一般的な投稿」のみが変更され、「お気に入りの投稿はユーザー」にそのまま残ります。

だから私はこのような「一般的なポスト」にのみポスト名を取得しよう:

...

var postRef = new Firebase("https://myapp.firebaseio.com/posts") 
var userFavoriteRef = userRef.child($scope.user_id).child("favorite_posts") 
$scope.favoritePosts = $firebaseArray(userFavoriteRef) 
var favoritePosts = $firebaseArray(userFavoriteRef) 

userFavoriteRef.once("value", function(snapshot) { 

    snapshot.forEach(function(childSnapshot) { 

     var key = childSnapshot.key() 
     $scope.key = childSnapshot.key() 
     postRef.child($scope.key).child("name").once('value', function(snap) { 
      console.log(snap.val()) 
      $scope.name = snap.val() 
     }) 

    }) 
}) 

しかし、私は...私のコンソールログに「ヌル」を持っており、それはいけない仕事です

多分私の論理は偽です...

あなたはどう思いますか?保留中です...ありがとう!

答えて

1

データを格納する別のアプローチをとる方が良いかもしれません。データの2つのコピーを持つ代わりに、一意のIDを持つものを持つだけです。個々のユーザーごとに、お気に入りの投稿の一意のIDを参照できます。これにより、1つの場所でのみデータを更新できるようになります。だから、あなただけのデータのコピーを持っている

myFirebase 
    - users 
    -user1 
    -user2 
    -user3 
    -favorites 
     -unique2 (reference to post, not the actual post) 
     -unique4 

    - posts 
    -unique1 
    -unique2 
    -unique3 
    -unique4 

、その後、あなたが探しているものを取得するために、ユーザーオブジェクトから参照:

はたとえば、次のようなデータ構造を使用することができます。投稿の変更はその投稿を参照するすべての場所に反映されます。

+0

私の例はありますか?私は他に何ができるのか分かりません... – PositivProd

+0

私はあなたのアイデアを理解しています、これは私がしたいことです。しかし、私はこれをどうすればできるのか分かりません... – PositivProd

+0

謝罪、私は適切なコードの応答を書く時間がありません。あなたのお気に入りのfirebase配列を使用して、それをあなたのアプリの変数に設定し、その配列をループし、firebase .once()を実行して、ユーザのお気に入りのそれぞれの一意のIDの値を取得することができます。それらをng-repeatとしてアプリケーションのフロントエンドに同期するスコープ変数にプッシュします。お気に入りの数が増えるにつれて、かなり重い取引ですが、今のニーズに合っています。 – funador

関連する問題