Вложенные массивы не поддерживаются
Новая база Firebase Firestore сообщает
Функция DocumentReference.set() вызвана с недопустимыми данными. Вложенные массивы не поддерживаются.
При попытке сохранить следующий объект:
{
"desc" : "Blala",
"geojson" : {
"features" : [ {
"geometry" : {
"coordinates" : [ 8.177433013916017, 48.27753810094064 ],
"type" : "Point"
},
"type" : "Feature"
} ],
"type" : "FeatureCollection"
},
"location" : {
"lat" : 48.27753810094064,
"lng" : 8.177433013916017
},
"name" : "Wald und Wiesen",
"owner" : "8a2QQeTG2zRawZJA3tr1oyOAOSF3",
"prices" : {
"game" : {
"Damwild" : 10,
"Raubwild" : 300,
"Rehwild" : 250,
"Schwarzwild" : 40
},
"perDay" : 35
},
"rules" : "Keine Regeln!",
"wild" : {
"desc" : "kein Wild",
"tags" : [ "Damwild", "Rehwild", "Schwarzwild", "Raubwild" ]
}
}
что именно представляет собой вложенный массив, о котором жалуется firestore? Я не могу найти его в документации.
Если это объект GeoJSON - как бы я его сохранил?
Ответы
Ответ 1
ОБНОВЛЕНИЕ: это было исправлено в Firebase JS SDK 4.6.0. Непосредственно вложенные массивы все еще не поддерживаются, но теперь вы можете иметь массив, содержащий объект, который содержит массив и т.д.
Это ошибка в выпущенных в настоящее время SDK.
Бэкэнд имеет ограничение, что только напрямую вложенные массивы не поддерживаются.
В вашем случае у вас есть массивы, содержащие объекты, содержащие массивы, и логика проверки в клиентах запрещает это, когда это не должно.
Там нет общедоступной ошибки отслеживания этого, но я отправлю обратно, когда у нас будет исправление.
Ответ 2
Вы можете адаптировать функцию сериализации, которая преобразует массивы с типами объектов в карту. Клавиши могут быть числовыми, чтобы поддерживать порядок.
то есть.
{ 1: Object, 2: Object2 ... }
При десериализации вы можете вернуть Object.values(data);
обратно в массив, который будет использоваться на стороне клиента.
Ответ 3
Не могу комментировать, так вот: это исправлено в 4.6.0, см. примечания к выпуску: https://firebase.google.com/support/release-notes/js#4.6.0
Облако Firestore
FIXED Исправлена проверка вложенных массивов для обеспечения косвенной вложенности.