angularjs – Firestore – 使用数组添加对象

前端之家收集整理的这篇文章主要介绍了angularjs – Firestore – 使用数组添加对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在这里整天用这个东西杀了我自己,我有两个部门和Articals:

export class Department {
articals?: Artical[]=[];
moms?: number;
id?: string;
constructor() {
}
}

和:

export class Artical {

moms?: number;
price: number;
name?: string;

constructor() {
}
}

喜欢你可以看到部门包含一个’Articals’数组
所以我正在使用新的articals(及其属性)构建新的部门,并尝试将其添加到fireStore:

this.departmetsCollection.doc(departmentId).set(Object.assign({},myDepartment));

但得到错误
“使用无效数据调用函数DocumentReference.set().不支持的字段值:自定义Artical对象”

P.s tryed仅将部分艺术品添加到部门的路径中

doc(departmentId).set({'articals':myArticals});

并且使用’update’而不是’set’但是没有任何帮助:S
将这种对象添加到firestore是什么意思?

解决方法

Firestore仅接受嵌入在文档中的JavaScript对象(如果它是“纯”对象),这意味着在使用TypeScript进行开发时不能使用自定义对象.因此,在将对象推送到articals数组之前,您必须映射它们.

首先更改您的Department类:

export class Department {
articals?: Array<any>=[];
moms?: number;
id?: string;
constructor() {
}
}

第二个映射你的“Artical”数组:

var map = arrayOfArtical.map((obj)=> {return Object.assign({},obj)});

然后你可以将地图值归因于’this.myDepartment.articals’

this.myDepartment.articals  = map;

之后你可以执行:

this.departmetsCollection.doc(departmentId).set(Object.assign({},myDepartment))

猜你在找的Angularjs相关文章