gpt4 book ai didi

angularjs - Firestore - 添加带有数组的对象

转载 作者:行者123 更新时间:2023-12-01 09:46:45 24 4
gpt4 key购买 nike

整天在这里用这个东西杀死自己,我有两个类(class)部门和艺术:

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

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

P.s 尝试仅将文章数组添加到 department as 的路径中

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

并且使用“更新”而不是“设置”,但也没有帮助: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)});

然后你可以将 map 值归因于'this.myDepartment.articals'

this.myDepartment.articals  = map;

之后你可以执行:

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

关于angularjs - Firestore - 添加带有数组的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47190803/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com