Firestore - 添加带有数组的对象
Firestore - adding object with an array
一整天都在这里用这个东西杀死自己,我有两个 类 部门和 Articals :
export class Department {
articals?: Artical[]=[];
moms?: number;
id?: string;
constructor() {
}
}
和:
export class Artical {
moms?: number;
price: number;
name?: string;
constructor() {
}
}
like 您可以看到 departments 包含 'Articals' 的数组
所以我正在用新的文章(及其属性)建立新的部门,并尝试将它添加到 fireStore 中:
this.departmetsCollection.doc(departmentId).set(Object.assign({},
myDepartment));
但出现错误:
"Function DocumentReference.set() called with invalid data. Unsupported field value: a custom Artical object"
P.s 尝试仅将文章数组添加到部门路径,如
doc(departmentId).set({'articals':myArticals});
并使用 'update' 而不是 'set' 但没有帮助 either:S
将那种对象添加到 firestore 的正确做法是什么?
Firestore 只接受文档中嵌入的 JavaScript 对象,如果它是“纯”对象,这意味着您不能在使用 TypeScript 开发时使用自定义对象。因此,您必须在将对象推送到 articals 数组之前映射它们。
先换部门class:
export class Department {
articals?: Array<any>=[];
moms?: number;
id?: string;
constructor() {
}
}
第二次映射你的"Artical"数组:
var map = arrayOfArtical.map((obj)=> {return Object.assign({}, obj)});
那你可以把map值归为'this.myDepartment.articals'
this.myDepartment.articals = map;
之后可以执行:
this.departmetsCollection.doc(departmentId).set(Object.assign({},
myDepartment))
一整天都在这里用这个东西杀死自己,我有两个 类 部门和 Articals :
export class Department {
articals?: Artical[]=[];
moms?: number;
id?: string;
constructor() {
}
}
和:
export class Artical {
moms?: number;
price: number;
name?: string;
constructor() {
}
}
like 您可以看到 departments 包含 'Articals' 的数组 所以我正在用新的文章(及其属性)建立新的部门,并尝试将它添加到 fireStore 中:
this.departmetsCollection.doc(departmentId).set(Object.assign({},
myDepartment));
但出现错误: "Function DocumentReference.set() called with invalid data. Unsupported field value: a custom Artical object"
P.s 尝试仅将文章数组添加到部门路径,如
doc(departmentId).set({'articals':myArticals});
并使用 'update' 而不是 'set' 但没有帮助 either:S 将那种对象添加到 firestore 的正确做法是什么?
Firestore 只接受文档中嵌入的 JavaScript 对象,如果它是“纯”对象,这意味着您不能在使用 TypeScript 开发时使用自定义对象。因此,您必须在将对象推送到 articals 数组之前映射它们。
先换部门class:
export class Department {
articals?: Array<any>=[];
moms?: number;
id?: string;
constructor() {
}
}
第二次映射你的"Artical"数组:
var map = arrayOfArtical.map((obj)=> {return Object.assign({}, obj)});
那你可以把map值归为'this.myDepartment.articals'
this.myDepartment.articals = map;
之后可以执行:
this.departmetsCollection.doc(departmentId).set(Object.assign({},
myDepartment))