Почему коллекции 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'.
![введите описание изображения здесь]()