【发布时间】:2019-07-14 13:44:26
【问题描述】:
将我的事件推送到 Firestore 后,我在事件 ID 中的数据被包装在另一个事件中(据说是 map() 对象)。为什么会这样?访问事件时,我必须执行“event.event.eventProperty”才能访问我的信息。第二个事件是在我的数据库中定义的,但不在我的代码中,因此会导致“事件属性不存在于事件”的错误。
我试图回溯整个事件创建过程,看看我是否不小心把我的事件推错了。到目前为止,我还没有找到具体的问题。我尝试在代码的各个部分使用 console.log(event) 并生成正确的对象,但是在推送它时,firebase 将数据嵌套在另一个事件对象中。 ''' 事件接口
export interface Event {
event_title?: String,
event_location?: String,
event_students?: String,
event_category?: String,
event_date?: String,
event_startTime?: String,
event_endTime?: String,
event_description?: String,
event_pictureURL?: String,
event_chatNumber?: Number,
event_goingCounter?: Number,
event_maybeGoingCounter?: Number,
event_creation_timeStamp?: Date ,
event_id?: Number,
createdBy?: String,
lastUpdate?: Number
}
''Firebase-database-service'
createEvent(event: Event) {
this.eventCollectionRef.add({
event
})
.then(function() {
console.log("Event was successfully created!");
})
.catch(function(error) {
console.log("Error Creating Event: ", error);
});
}
'tab3(事件创建画面)'
createEvent() {
this.event = {
event_title: this.createEventForm.controls["event_title"].value,
event_location: this.createEventForm.controls["event_location"].value,
event_students: this.createEventForm.controls["event_students"].value,
event_category: this.createEventForm.controls["event_category"].value,
event_date: this.createEventForm.controls["event_date"].value,
event_startTime: this.createEventForm.controls["event_startTime"].value,
event_endTime: this.createEventForm.controls["event_endTime"].value,
event_creation_timeStamp: this.createEventForm.controls["event_creation_timeStamp"].value,
event_description: this.createEventForm.controls["event_description"].value,
event_pictureURL: "",
event_chatNumber: 0,
event_goingCounter: 0,
event_maybeGoingCounter: 0,
createdBy: this.user.uid
}
this.FirebaseDatabase.createEvent(this.event)
this.showToast("Event has been created.");
}
''这是我从 firestore 检索具有特定 id 的事件的地方'
ngOnInit() {
event: Event;
this.firebaseDatabase.getEvent(this.id).subscribe( res => {
this.event = res
console.log(this.event["event"].event_category)
})
}
''GetEvent(id: string) 定义'
getEvent(id:string) {
return this.eventsCollection.doc<Event>(id).valueChanges().pipe(take(1), map(event => {
return event
}))
}
错误信息
预期:将我的事件对象按原样推送到 Firestore。不要嵌套它。
实际:事件对象嵌套在地图中。
【问题讨论】:
标签: javascript typescript firebase google-cloud-firestore