需要将对象添加到我的Firestore数据库中。它仅接受JSON对象。但是,我也想排除对象的某些字段,以免将其发送到数据库。
因此,我添加了一个函数,该函数应返回如下所示的JSON:
export class Entry {
date: number;
timeStart: number;
timeEnd: number;
entry: EntryData;
// To be excluded from database
selected: boolean;
constructor(date: number, timeStart: number, timeEnd: number, entry: EntryData) {
this.date = date;
this.timeStart = timeStart;
this.timeEnd = timeEnd;
this.entry = entry;
}
toJSON() {
return {date: this.date, timeStart: this.timeStart, timeEnd: this.timeEnd, entry: JSON.parse(JSON.stringify(this.entry)) };
}
}
不过,当我console.log(entry.toJSON())
这样做时,我会得到:
workday.service.ts:122 ƒ () {
return { date: this.date, timeStart: this.timeStart, timeEnd: this.timeEnd, entry: JSON.parse(JSON.stringify(this.entry)) };
}
我想使用如下功能:
this.employeeRef.collection('Entries').add(entry.toJSON);
但这不起作用。它是这样的:
this.employeeRef.collection('Entries').add(JSON.parse(JSON.stringify(entry)));
但是这样selected
字段不会从数据库中排除。
有什么想法吗?请注意,我使用的是TypeScript(带有Angular),但我认为那是一个纯JavaScript问题。
答案 0 :(得分:1)
您可能想使用getter:
get toJSON() {
return {date: this.date, timeStart: this.timeStart, timeEnd: this.timeEnd, entry: JSON.parse(JSON.stringify(this.entry)) };
}
答案 1 :(得分:0)
这似乎可行:
toJSON() {
return {date: this.date, timeStart: this.timeStart, timeEnd: this.timeEnd, entry: JSON.parse(JSON.stringify(this.entry)) };
}
我可以这样使用它:
his.employeeRef.collection('Entries').add(entry.toJSON());