新的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对象-我应该如何保存它呢?
6条答案
按热度按时间iih3973s1#
(in如果有人在Google上找到这个问题)
我在Firebase Admin中遇到此错误,但此**answer**帮助了我
不正确:
字符串
为了解决这个问题,我修改了spread语法:
型
4c8rllxm2#
最新消息:这在Firebase JS SDK 4.6.0中得到了修复。* 直接 * 嵌套数组仍然不受支持,但现在您可以拥有一个数组,该数组包含一个包含数组的对象,等等。
这是当前发布的SDK中的一个bug。
后端有一个限制,即只支持直接嵌套的数组。
在你的例子中,你有一个数组,其中包含了包含数组的对象,而客户端的验证逻辑在不应该允许的时候禁止它。
没有公开的bug跟踪这个问题,但我会在我们有修复的时候回来。
kg7wmglp3#
你可以使用一个序列化函数,将带有对象类型的数组转换成一个Map。键可以是数字以保持顺序。
即
{ 1: Object, 2: Object2 ... }
在格式化时,您可以将
Object.values(data);
放回数组中,以便在客户端使用。moiiocjp4#
无法发表评论,所以在这里它去:这是固定在4.6.0,请参阅发行说明:https://firebase.google.com/support/release-notes/js#4.6.0
Cloud Firestore
修正了嵌套数组的验证以允许间接嵌套。
z0qdvdin5#
Python:
字符串
Firestore不允许2d数组,就像前面的答案已经指出的那样,但它们允许数组的Map.数组:)
ifmq2ha26#
你可以选择插入一个带有嵌套数组和字符串格式的对象的文档;对我来说,在JavaScript中,它是:
字符串