不支持嵌套数组
Nested arrays are not supported
新的 Firebase 数据库 Firestore 说
Function DocumentReference.set() called with invalid data. Nested arrays are not supported.
尝试保存以下对象时:
{
"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 对象 - 我将如何保存它?
更新:这已在 Firebase JS SDK 4.6.0 中修复。 直接仍然不支持嵌套数组,但您现在可以拥有一个包含一个对象的数组,该对象包含一个数组等
这是当前发布的 SDK 中的错误。
后端限制只支持直接嵌套数组
在您的情况下,您的数组包含包含数组的对象,并且客户端中的验证逻辑在不应该的时候不允许它。
没有 public 错误跟踪此问题,但我会 post 修复后返回。
您可以采用序列化函数,将具有对象类型的数组转换为映射。键可以是数字以保持顺序。
即
{ 1: Object, 2: Object2 ... }
在反序列化时,您可以获得 Object.values(data);
将其放回数组中以供客户端使用。
无法评论所以就这样吧:这在 4.6.0 中已修复,请参阅发行说明:https://firebase.google.com/support/release-notes/js#4.6.0
Cloud Firestore
FIXED Fixed the validation of nested arrays to allow indirect nesting.
Python:
# Matrix storage in firestore
def matrix_to_fb_data(matrix):
return [{'0': row} for row in matrix]
def fb_data_to_matrix(fb_data):
return [row['0'] for row in fb_data]
Firestore 不允许二维数组,就像之前的答案所指出的那样,但它们允许地图数组...数组:)
新的 Firebase 数据库 Firestore 说
Function DocumentReference.set() called with invalid data. Nested arrays are not supported.
尝试保存以下对象时:
{
"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 对象 - 我将如何保存它?
更新:这已在 Firebase JS SDK 4.6.0 中修复。 直接仍然不支持嵌套数组,但您现在可以拥有一个包含一个对象的数组,该对象包含一个数组等
这是当前发布的 SDK 中的错误。
后端限制只支持直接嵌套数组
在您的情况下,您的数组包含包含数组的对象,并且客户端中的验证逻辑在不应该的时候不允许它。
没有 public 错误跟踪此问题,但我会 post 修复后返回。
您可以采用序列化函数,将具有对象类型的数组转换为映射。键可以是数字以保持顺序。
即
{ 1: Object, 2: Object2 ... }
在反序列化时,您可以获得 Object.values(data);
将其放回数组中以供客户端使用。
无法评论所以就这样吧:这在 4.6.0 中已修复,请参阅发行说明:https://firebase.google.com/support/release-notes/js#4.6.0
Cloud Firestore
FIXED Fixed the validation of nested arrays to allow indirect nesting.
Python:
# Matrix storage in firestore
def matrix_to_fb_data(matrix):
return [{'0': row} for row in matrix]
def fb_data_to_matrix(fb_data):
return [row['0'] for row in fb_data]
Firestore 不允许二维数组,就像之前的答案所指出的那样,但它们允许地图数组...数组:)