2016-04-17 4 views
2

firebaseでこの問題を解決する方法を見つけることができません: 私はユーザがいて、各ユーザには投稿があり、各投稿にはfirebaseによって生成されたIDがあります。ユーザノード?Firebaseにidsのリストを保存する

私は文字列を使用して、それらを連結し、私のjsアプリケーションで解析しています。基本的にそれらをcsvファイルとして扱います。しかし、私はそれが非常に醜い解決策だと思います。

この種のデータをどのように保存するのでしょうか?

編集:

ユーザーID:

  • ユーザ名= "ユーザー名"
  • 投稿= "ID1、ID2、ID3、ID4"

ユーザーが新しいを持っています私はトランザクションを使って文字列の最後に新しいIDを追加します。私はIDを削除する必要がある場合には、再び私は、トランザクションを使用して、私はこのコードを使用して要素を削除します。トランザクションはこのために動作しますが

removeElem(list, value) { 
var separator = ","; 
var values = list.split(separator); 
for (var i = 0; i < values.length; i++) { 
    if (values[i] == value) { 
     values.splice(i, 1); 
     return values.join(separator); 
    } 
} 
return list; 
}, 
+2

データ構造とコードを説明する代わりに、それを表示してください。あなたが求めているものを再現する、最小限で完全なコンパイル可能な例を提供してください。 「醜い」は非常に主観的なので、あなたの心配が何であるかを言う。あなたが醜いと思うもの、私は "それは働くので、それは美しい"と考えるかもしれません。 –

+0

私の投稿を編集し、いくつかの情報を追加しました。 –

+0

以下の回答。非常に頻繁に、これは主に[JavaScript開発者のためのFirebaseガイド](https://www.firebase.com/docs/web/guide/)の関連するスニペットのコピーです。今日はそのガイドをカバーで読むことを強くお勧めします。そこに数時間を費やして、より多くの時間(そして多くの質問)を節約するでしょう。 –

答えて

3

、それは真剣にスケーラビリティが痛いし、一時的にするときに、すべてのユーザーが動作しません。接続が失われます。より良い解決策を得るには、配列ロジックを取り除き、Firebaseのpush()メソッドを使用してください。 Firebase documentation on saving lists of dataから:

トランザクション

VSプッシュデータのリストを扱うpush()ユニークかつ時系列IDを保証します。代わりにトランザクションを使用して独自のIDを生成することができますが、プッシュははるかに優れた選択です。トランザクションはより遅く、より複雑です。サーバーへの1回以上のラウンドトリップが必要です。クライアントがオフラインで動作し、パフォーマンスに最適化されたプッシュIDを生成できます。

非順次キーに慣れているかもしれませんが、長期的には改善されるでしょう。

+0

申し訳ありませんが、私の場合、どのようにデータを表示する必要がありますか?正直言って、これを考え出すのは難しいです。 ユーザーの投稿ノードでは、IDが必要です。次のようになります。 投稿{id1: "something、id2:" something "、...} –

+0

投稿は別個のノードにあります。 –

+0

しかし、一般的な構造は '{id1:true、id2:true}'です。[インデックスを使って複雑な関係を定義する]のFirebaseのドキュメントを参照してください。 (https://www.firebase.com/docs/web/guide/structuring-data.html#section-indices)。 –

関連する問題