当我尝试将 map 写入 firebase 时遇到此错误:
FirebaseError: Function DocumentReference.set() called with invalid data. Unsupported field value: a custom Map object (found in field documentData.elements)
我想将 map 而不是数组写入 firebase,以便能够合并数据集而不覆盖整个数组,而仅添加或删除 map 的条目。 但是,即使 firebase 文档说它支持 map ,我也无法让 map 工作。
我的界面如下所示:
export interface Element {
uid:string;
value:string;
}
export interface DocumentData {
uid: string;
elements: Map<string, Element>;
}
将这些写入文档不起作用,并且会失败并出现上述错误。
let documentData = {uid:"test_uid", elements: new Map([{"one", "test_string"}],[{"two", "test_string"}]]);
...
...
.doc(documentData.uid)
.set({documentData, {merge: true});
有人知道如何将 map 写入存储吗?这实际上是 map 的问题还是我使用的设置错误?
最佳答案
Firestore 仅接受包含要写入文档的字段和值的普通旧式 JavaScript 对象。它不接受 ES6 Map 对象,这完全不是一回事。
只需构建对象并将其传递给 set()
:
const data = {
uid: "test_uid",
elements: {
one: "test_string",
two, "test_string"
}
}
set(data, {merge: true})
我建议咨询documentation了解更多示例。 Java 支持 map 对象,但 JavaScript 不支持。
上面的代码会发生什么,它将更新两个字段,一个“元素”将是 Firestore map 类型字段。
关于javascript - Firebase Javascript/Typescript map 兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60160121/