Есть ли способ запретить базе данных Firebase Realtime загружать имена элементов JSON? - PullRequest
3 голосов
/ 25 мая 2019

В основном у меня есть таблица лидеров, которая показывает результаты 50 лучших игроков.Следуя рекомендациям Firebase, я выровнял данные и сохранил результаты в таблице лидеров отдельно от данных игрока.Однако загрузка данных выше, чем я ожидал (3.62kb для 50 баллов).Вот пример одной из этих записей результатов.

    "wgstgJIaVcbdOFvTLIk0VyhO77" : {
      "display_name" : "FakeName7",
      "high_score" : 4
    },

Я думаю, что использование данных исходит от идентификатора пользователя (wgstgJIaVcbdOFvTLIk0VyhO77) Это на самом деле не нужно загружать, но мне нужно сохранить егопотому что я использую его в своих правилах безопасности, чтобы вы могли только обновлять свой счет.Также отображаемое имя не является уникальным, поэтому я не могу использовать его в качестве ключа.

Я понимаю, что использование более коротких имен ключей (display_name -> n) также поможет.

  Path         │ Total   │ Count │ Average │
├──────────────┼─────────┼───────┼─────────┤
│ /leaderboard │ 3.62 kB │ 1     │ 3.62 kB

Если у кого-то естьлучший способ структурировать этот тип данных, я все уши.

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Ответы Firebase API представлены в формате JSON (как четко указано в исходном вопросе), а предоставление ключей и значений является частью спецификации JSON.Теоретически существует формат BJSON (Binary JSON), который экономит много места как в процессе передачи, так и в хранилище, но вы не можете контролировать, какой формат использует API Firebase.

  • Единственный вариант -сокращайте имена ключей, в то время как я настоятельно советую вам быть осторожным с любыми попытками сократить определенные значения свойств, например, значения идентификаторов пользователя (например, пытаясь реализовать целочисленные идентификаторы и т. д.), так как это можетимеют последствия для безопасности.
  • Еще один момент, который необходимо учитывать: если в ваших значениях данных есть кодовые точки UTF-8 (нелатинские символы), они будут закодированы в JSON, и их кодированное представление займет еще большеspace.
  • Если вам нужен более «компактный» ответ API, вы должны рассмотреть различные реализации бэкэнда с RESTful API.Просто помните, что у Firebase есть много ограничений.Легко начать, очень сложно реализовать более сложную логику поиска данных.

Последнее, но не менее важное - 3,62 КБ для 50 баллов - это нормально, даже при медленном соединении.Спросите себя, стоит ли тратить слишком много времени на микрооптимизацию.

0 голосов
/ 24 июня 2019

Не существует API для получения списка только значений ряда узлов, без получения соответствующих ключей.

Единственное, что вы можете рассмотреть, - использовать более короткие ключи как для дочерних узлов ("wgstgJIaVcbdOFvTLIk0VyhO77 "), так и для имен свойств ("display_name", "high_score").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...