2016-07-19 16 views
1

私はfirebaseを初めて使いました。私はデータを適切に保存しているかどうかわかりません。firebaseの適切なデータ構造

私はデータを格納するフォームを構築しています。今は2つのフィールドしか持っていませんが、後でさらにいくつかのフィールドを追加します。

マイフォームのHTMLは次のようになります。

<form> 
<div class="form-group"> 
    <input placeholder="Event Title..." class="form-control" name="eventTitle" ng-model="newEvent.title"> 
</div> 
<div class="form-group"> 
    <input placeholder="random..." class="form-control" name="eventRandom" ng-model="newEvent.random"> 
</div> 
<button type="submit" class="btn btn-primary pull-right" ng-click="addEvent(newEvent);newEvent = null;">send</button> 

私のコントローラは次のようになります。firebaseで

.controller('ChatCtrl', function ($scope, Ref, $firebaseArray, $timeout) { 
// synchronize a read-only, synchronized array of events, limit to most recent 10 
$scope.events = $firebaseArray(Ref.child('events').limitToLast(10)); 

// display any errors 
$scope.events.$loaded().catch(alert); 

// provide a method for adding a event 
$scope.addEvent = function(newEvent) { 
    if(newEvent) { 
    console.dir('newEvent: '+ newEvent); 
    // push a event to the end of the array 
    $scope.events.$add({newEvent}) 
     // display any errors 
     .catch(alert); 
    } 
}; 

、データは次のようになります。

enter image description here

"newEvent"ノードは完全に冗長であるようです。フォームとコントローラを正しくコーディングする方法がわかりません。私がインターネット上で見つけたすべての例は、チャットルームを例として使用しています。送信フォームには、単一のテキストエリアしか含まれていません。

私は、上記の例を示していましたが、私が指摘したように、firebaseがキーを生成した後、 "newEvent"ノードは冗長に見えます。

複数の入力フィールドを持つフォームをコーディングする適切な方法は何ですか?

答えて

2

あなたはnewEventを取り除くと、純粋になるように構造を設定取得したい場合:

events 
    push-key 
     random: "random", 
     title: "event title" 
    push-key 
     ... 

どのよう$addデータの変更:あなたがして、オブジェクトを推進している

$scope.events.$add({ title: newEvent.title, random: newEvent.random }) 
// display any errors 
.catch(alert); 

構造体:

newEvent 
    random: "random", 
    title: "event title" 

このオブジェクト全体を挿入します.Uプッシュキーを押します。

+0

あなたの答えをありがとう。それは今より意味をなさない。私は実際にオブジェクトを押していることを理解していませんでした。私には質問があります。最終的には、これらの「イベント」をリストとして表示する必要があります。また、イベントを作成するユーザーと関連付けられます。最後に、これらはタイトル、日付、地理座標によって照会されます。 (最後の2つの入力はまだフォームに追加されていません)。このシナリオでは、プッシュキーの下にデータを格納するだけでオブジェクトを格納する利点はありますか? – Livi17

+0

あなたのイベントにはほとんどないでしょう。しかし、同じタイプの複数のインスタンスを含むことができるツリーがある場合は、オブジェクトの下に格納することができます。フォームの**インスタンス**(ランダム、タイトルなど)しか持たないことが保証されている場合は、親オブジェクトは必要ありません。 – theblindprophet

関連する問題