使用Firebase

时间:2016-04-30 02:36:38

标签: javascript firebase denormalization

背景

我正在尝试构建一个简单的SMS消息传递应用程序,它在根级别存储了两个树:numbersmessages - 以及它们之间的双向关系using indices

我希望能够快速获取特定号码的消息历史记录,将新消息发送到新号码,并将新消息发送到现有号码,呈现发送的&实时收到消息。

我的数据结构如下:

{
  "messages" : {
    "-KGZyhbh9sGsizizVyyq" : {
      "5551234" : true,
      "body" : "Foo"
    },
    "-KGZykRFPtdWY2fWb62u" : {
      "555000" : true,
      "body" : "Bar"
    }
  },
  "numbers" : {
    "555000" : {
      "messages" : {
        "-KGZykRFPtdWY2fWb62u" : true
      }
    },
    "5551234" : {
      "messages" : {
        "-KGZyhbh9sGsizizVyyq" : true
      }
    }
  }
}

当新邮件发送到某个号码时,该邮件会添加到messages下,Firebase会返回一个唯一ID,然后我将其用作numbers/:number/messages下的密钥。

这是我目前用于阅读数据的内容:

var ref = new Firebase('https://FIREBASE-APP.firebaseio.com/');

function fetchMessages(number) {
  var numberMessagesRef = ref.child('numbers/' + number + '/messages');
  numberMessagesRef.on('child_added', function(snap) {
    ref.child('messages/' + snap.key()).once('value', function(message) {
      displayMessage(message.val()); // Prepends an <li> in the DOM
    });
  });
}

$('#number').focusout(function() {
  var number = $(this).val();
  fetchMessages(number);
});

问题

  • 此数据结构是否是在Firebase中构建数据的正确方法?
  • 我是否正确使用了索引?
  • 这似乎对于获取数字的消息历史记录(可能是数百条消息)来说真的很慢。我如何进一步优化?

0 个答案:

没有答案