2017-01-02 6 views
0

サブファイルが削除された場合は、取得する方法はありますか。 DB構造は次のとおりです。Firebaseのサブフォルダが削除されました

users:{ 
    a: { 
    friends: { 
     b:Jhon, 
     c:Ted 
    }, 
    b: { 
    friends: { 
     a: Tom 
    } 
    }, 
    c: { 
    friends:{ 
     a: Tom 
    } 
    } 
} 

私は誰もが友人から任意の子を削除しながら、イベントを取得します。 すべてのユーザーにイベントをアタッチするのは良い方法ではありません。
私はここでNode.jsの管理者に

+1

「child_changed」イベントを追加するのはどうですか?そのイベントは、各子(またはユーザー)のデータが変更/更新されるたびにトリガーされます。 – Wilik

+0

あなたのやり方で@Wilik私は変数にすべてのデータを保持しなければならず、すべての変更で何が変更されたかを知る必要があります。 私はそれが効率的ではない –

+0

うまくいけば、唯一の方法はすべての 'userid/friends'に' child_removed'イベントを付けることです。あなたのコードはサーバにあるとにかく – Wilik

答えて

0

をしようとしている別の方法で、あなたは「友人の削除要求」のための特別なノードを作成することができますので、クライアントはこれだけのノードに書き込み、その後、サーバーは削除を処理します。

まず、サーバーこのデータベース構造で

{ 
    users: { 
     a: { 
      friends: { 
       b:Jhon, 
       c:Ted 
      }, 
     } 
     b: { 
      friends: { 
       a: Tom 
      } 
     }, 
     c: { 
      friends:{ 
       a: Tom 
      } 
     } 
    } 
    friend_removal_request : { 
     <push_id>: { 
      first_user: a, 
      second_user: b 
     } 
    } 
} 
  • を見ては、使用して(利用者が自分の友人を削除したい場合は、そのクライアントが新しいエントリを書き込みfriend_removal_request
  • child_addedリスナーを添付しますDatabaseReference.push()メソッド)からfriend_removal_requestまでです。 first_userは、second_userは、サーバーが今null値を設定することによって、彼らの友情を削除するには進むことができます(またはremove()を呼び出す)/users/$first_user/friends/$second_user/users/$second_user_user/friends/$first_user
  • に続いて、サーバーでのリスナーが発射される彼らの友人のid
  • ユーザーのIDです友情が削除されると、サーバーはその要求を削除します。snapshot.ref.remove()

リスナーはノードにのみ接続されます。

これは私の考えです。あなたがこの方法に別の懸念がある場合は教えてください。 これが役に立ちますようお願いいたします:)

+0

良いアイデア(y)私はそれを回避します –

+0

素晴らしい、これも防止する方法ですサーバがダウンした場合のための一貫性 – Wilik

関連する問題