2016-06-26 14 views
0

Firebaseのデータ構造については、次のように処理します。firebaseデータ構造を作成する際に問題が発生しました

ユーザは思考を記録する方法を作成できます。彼らは彼らが望むところでそれを呼び出すことができます。 Mary Chenjournalを渡し、Mr Ownerはそれに名前を付けたい(パラメータを渡す)logを渡します。 Firebaseは、これらの名前を、ユーザが名前をつけようとしたどのパラメータにでも命名する独自のツリーとして保存します。

別のツリーが表示されます。whenLoggedIn + \(parameter)。このツリーはyyyy-mm-ddの日付を対応するポストに保存します。

例:

{ 
    "uids": { 
     "D0Ez8edYhIbTuUfmIeO0KOq5xVB3": { 
      "friends": { 
       "IbTuUfmIeO0KOBr5Q4gAqD": true 
      }, 
      "name": "Mary Chen", 
      "journal": { 
       "entry 1- trader joes": "went to store! :)", 
       "entry 2- ate sushi": "took out the garbage today then got free sushi from trader joes!!!" 
      }, 
      "whenLoggedInJournal": { 
       "1": "1997-12-25", 
       "2": "2016-2-23" 
      } 
     }, 
     "L8kBHaGBr5Q4gAqDOhFY29Okepm1": { 
      "friends": { 
       "D0Ez8edYhIbTuUfmIeO0KOq5xVB3": true 
      }, 
      "name": "Mr Owner", 
      "journal": { 
       "log 1": "spotted some drunkard in my store", 
       "log 2": "drainage pipe clogged with tomatos, I suspect the drunkard", 
       "log 3": "did inventory check, 1 less sushi box, suspect the drunkard" 
      }, 
      "whenLoggedInLog": { 
       "1": "1997-12-25", 
       "2": "2016-2-27", 
       "3": "2016-4-2" 
      } 
     } 
    } 
} 

私はFirebaseガイドの「構造化データ」を読んで、私は一度にツリーに追加する方法を把握していませんでした。私はまた、平坦化されたデータセットを達成したい。私がやっていることにはそれが必要でしょうか?

答えて

1

推奨されるFirebaseデータ構造は、各エンティティを独自の最上位ノードにプルアップすることです。だから、につながる、あなたのケースで:

{ 
    "userNames": { 
     "D0Ez8edYhIbTuUfmIeO0KOq5xVB3": "Mary Chen", 
     "L8kBHaGBr5Q4gAqDOhFY29Okepm1": "Mr Owner" 
    }, 
    "userFriends": { 
     "D0Ez8edYhIbTuUfmIeO0KOq5xVB3": { 
      "IbTuUfmIeO0KOBr5Q4gAqD": true 
     }, 
     "L8kBHaGBr5Q4gAqDOhFY29Okepm1": { 
      "D0Ez8edYhIbTuUfmIeO0KOq5xVB3": true 
     } 
    }, 
    "userJournals": { 
     "D0Ez8edYhIbTuUfmIeO0KOq5xVB3": { 
      "entry 1- trader joes": "went to store! :)", 
      "entry 2- ate sushi": "took out the garbage today then got free sushi from trader joes!!!" 
     }, 
     "L8kBHaGBr5Q4gAqDOhFY29Okepm1": { 
      "log 1": "spotted some drunkard in my store", 
      "log 2": "drainage pipe clogged with tomatos, I suspect the drunkard", 
      "log 3": "did inventory check, 1 less sushi box, suspect the drunkard" 
     } 
    }, 
    "whenLoggedInJournals": { 
     "D0Ez8edYhIbTuUfmIeO0KOq5xVB3": { 
      "1": "1997-12-25", 
      "2": "2016-2-23" 
     }, 
     "L8kBHaGBr5Q4gAqDOhFY29Okepm1": { 
      "1": "1997-12-25", 
      "2": "2016-2-27", 
      "3": "2016-4-2" 
     } 
    } 
} 

この構造:

  • は、それが簡単に、例えば、ユーザデータの一部をロードすることができます
  • という名前だけで、データの保護が容易になります。ユーザ名は公開し、友人リストは自分自身と友人が見ることができるようにし、自分自身だけが見ることができるジャーナルとログインデータ
+0

[これはどうしてでしょうか?](http://imgur.com/XFXyX3S )別のログ日付を追加すると '.childByAppendingPath(" whenLoggedInJournals ")'になりますか?どのuidを追加するかをどのように指定しますか?データを取得するときにどのユーザーからデータを取得するかを指定する方法は? – user5812721

+1

@ user5812721すべてがユーザーのUIDに結び付けられています。そのユーザがログインすると、FirebaseのauthData.uid変数からuidを知ることができます。そこから、そのuidを介してデータを簡単に照会または書き込むことができます。ですから、3番目の日付をloggedInに追加すると、.childByAppendingPath( "whenLoggedInJournals/uid/3")。setValue(todayDate)に "3"が追加されます: "2016-6-25"。副作用として、Firebaseでは一般的にフラットな構造が良いが、データを平坦化する理由があるはずです。それはただの原因にしないでください。ジャーナルエントリはタイムスタンプを付けられ、単一ノード内のエントリを含むことができる。 – Jay

関連する問題