Метод firebase get, возвращающий список для одного объекта объектов и дикту для другого

Я использую django с firebase и имею 2 объекта в базе данных, все о них одинаково, способ хранения в базе данных, способ доступа к ним. Когда я использую метод get телефоны = ref.child('Data').child('users').child(uid).child('phones').get() компьютеры = ref.child('Data').child('users').child(uid).child('computers').get() (абсолютно тот же способ) для первого я получаю список dict, выглядящий так [{'OS': 'Windows', 'батарея': 2000.0, 'память': 16.0, 'популярность': 200.0, 'цена': 2429.73, 'экран': 6.0}, {'OS': 'Windows', 'батарея': 1600.0, 'память': 32.0, 'популярность': 200.0, 'цена': 1907.28, 'экран': 6.0}]] и для второго я получаю дикту из дикты как эта
{'12': {'cd': 'no', 'hd': 5.0, 'multi': 'нет', 'premium': 'yes', 'цена': 1397.0, 'ram': 5.0, 'экран': 2.0, 'скорость': 5.0}, '13': {'cd': 'yes', 'hd': 45.0, 'multi': 'нет', 'premium': 'нет', 'цена': 1999.0, 'ram': 8.0, 'экран': 14.0, 'speed': 120.0}} у второго также есть их id, ниже которого они хранятся (я храню их так ref = db.reference("Data/users/"+str(request.session['user_id'])+'/phones/'+str(phone.id))) телефон = phone.save_to_firebase() ref.set(phone), ref = db.reference("Data/users/"+str(request.session['user_id'])+'/computers/'+str(comp.id)) компьютер = comp.save_to_firebase() ref.set(computer)) Я хочу, чтобы оба варианта выглядели как второй и понятия не имею, почему они отличаются

Я проверил все, но нет ни единой разницы в том, как обрабатываются объекты

Похоже, что вы храните узлы в Firebase Realtime Database с короткими числовыми значениями для их ключей. Это заставляет Firebase SDK пытаться интерпретировать их как массивы, что, похоже, работает в одних случаях и не работает в других.

Нет никакого способа контролировать такое поведение SDKs/APIs, поэтому лучший способ справиться с этим - не использовать цифровые клавиши, и, например, префикс для них бу короткое строковое значение, т.е. key_12.

Подробнее о том, как Firebase работает с массивами/массивоподобными структурами, смотрите Best Practices: Массивы в Firebase.

Вернуться на верх