【问题标题】:Proper data structure in firebasefirebase 中的正确数据结构
【发布时间】:2016-07-19 16:10:17
【问题描述】:

我是 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 中,数据如下所示:

“newEvent”节点似乎完全多余。我不确定如何正确编码我的表单和控制器。我在互联网上找到的所有示例都以聊天室为例,并且发送表单仅包含一个 textarea 字段。

我确实找到了一个包含多个字段的示例,它显示了上面的示例,但是正如我所指出的,在 firebase 生成的密钥之后,“newEvent”节点似乎是多余的。

编写具有多个输入字段的表单的正确方法是什么?

【问题讨论】:

    标签: javascript angularjs firebase firebase-realtime-database


    【解决方案1】:

    如果您想摆脱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"
    

    这会将整个对象插入到按键下方。

    【讨论】:

    • 感谢您的回答。现在更有意义了。我不明白我实际上是在推动一个物体。我确实有一个问题。最终,这些“事件”将需要显示为列表。它们还将与创建事件的用户相关联。最后,这些将按标题、日期以及地理坐标进行查询。 (最后两个输入我还没有添加到表单中。)在这种情况下,存储对象是否比仅在按键下存储数据有优势?
    • 很可能不适合您的活动。但是如果你有一棵树可以包含相同类型的多个实例,那么你想存储在一个对象下面。如果您保证只有 一个 表单实例(随机、标题等),那么您不需要父对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多