2016-07-19 3 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> 

Мой контроллер выглядит следующим образом:

.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); 
    } 
}; 

В firebase, данные выглядит следующим образом:

enter image description here

Узел «newEvent» кажется полностью избыточным. Я не уверен, как правильно закодировать мою форму и контроллер. Все примеры, которые я, как представляется, в Интернете, используют в качестве примера чат-комнату, а форма отправки содержит только одно поле textarea.

Я нашел пример с несколькими полями, и он показал вышеприведенный пример, однако, как я уже указывал, узел «newEvent» кажется лишним после того, как сгенерированный firebase ключ.

Каков правильный способ кодирования формы с несколькими полями ввода?

ответ

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

Спасибо за ваш ответ. Теперь это имеет больше смысла. Я не понимал, что я на самом деле толкаю объект. У меня есть вопрос. В конце концов, эти «события» должны отображаться в виде списка. Они также будут связаны с пользователем, который создает событие. Наконец, они будут запрашиваться по названию, а также по дате, а также по геокоординации. (Последние два ввода, которые я еще не добавил в форму.) Есть ли преимущество в хранении объекта только для хранения данных под кнопкой в ​​этом сценарии? – Livi17

+0

Скорее всего, не для ваших событий. Но если у вас есть дерево, которое может содержать несколько экземпляров одного и того же типа, то вы хотите сохранить их под объектом. Если вам гарантируется когда-либо только ** один экземпляр вашей формы (случайный, заголовок и т. Д.), Вам не нужен родительский объект. – theblindprophet

Смежные вопросы