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))