Почему коллекции firebase, похоже, начинаются с нулевой строки?

firebase example database

Я создал простой набор данных firebase для тестирования некоторых вызовов REST (см. изображение ниже). Мне интересно, почему, когда я запрашиваю коллекции в базе данных, firebase всегда возвращает нулевую строку сначала, а затем фактические строки. Вот что я получаю, когда я экспортирую данные. Обратите внимание на нулевые строки под системами и system_types:

{
  "systems" : [ null, {
    "system_type_id" : 2,
    "name" : "Commodore 128",
    "id" : 1
  }, {
    "system_type_id" : 1,
    "name" : "Difference Engine",
    "id" : 2
  }, {
    "system_type_id" : 2,
    "name" : "Osborne",
    "id" : 3
  } ],
  "system_types" : [ null, {
    "name" : "Babbage",
    "id" : 1
  }, {
    "name" : "Von Neumann",
    "id" : 2
  } ]
}

Ответ 1

Firebase автоматически определяет, когда объект "похож" на массив и преобразует его соответствующим образом. Поскольку "системы" и "system_types" имеют дочерние элементы из 1, 2 и 3, Firebase автоматически преобразует их в массивы во время вывода. Однако, поскольку вы не указали значение для индекса 0, Firebase просто вставляет пустой элемент.

Я бы предложил либо использовать идентификаторы с нулевым основанием, либо, возможно, начать свой идентификатор с чем-то нечисловым, поэтому мы знаем, что это не массив (то есть: item1, item2, item3).

Вы также можете просто игнорировать нулевой элемент. В Firebase null и несуществующие - это одно и то же.

Ответ 2

Я нашел взлом для вышеупомянутой проблемы. Просто используйте нечисловой (фиктивный) ключ со всеми цифровыми клавишами, и firebase не будет преобразовывать числовой ключ в null при экспорте. Пожалуйста, проверьте экранный снимок для лучшего понимания. Я использовал 'd' с другими цифровыми клавишами, хотя я не использую ключ 'd'.

введите описание изображения здесь