我有一个 MeetingService,它通过 HorizonIO 从我的 RethinkDB 中获取数据。当尝试通过其 ID 获取会议时,我总是会得到一个空值作为响应。此服务中的其他方法可以正常工作。
会议服务.ts:
getMeetingById(passedId: string): Observable<Meeting[]> {
return this.table.find({meetingId: passedId}).fetch();
}
会议细节.component.ts:
currentMeeting: Meeting;
getCurrentMeeting(): void {
this._meetingsService.getMeetingById(this.passedId).subscribe(
(returnMeetings: Meeting[]) => {
this.currentMeeting = returnMeetings[0];
}
);
}
即使我将passedId 更改为直接从数据库(通过管理面板)获得的ID,该方法仍然返回null。
如果我更改代码以返回表中的第一个值,那么一切都会正常工作。
getMeetingById(passedId: string): Observable<Meeting[]> {
return this.table.order("meetingId", "descending").limit(1).fetch();
}
在我看来,最终结果是 currentMeeting var 上未定义的错误:
EXCEPTION: Error in ./MeetingDetailComponent class MeetingDetailComponent - inline template:1:4 caused by:
Cannot read property 'meetingId' of undefined
编辑:显示不同实现的附加代码:
load() {
if(this.passedId != null) {
this._feedService.GetFeedById(this.passedId).subscribe(
(returnFeed: Feed[]) => {
this.currentFeed = returnFeed[0];
}
);
} else {
this._feedService.GetFirstFeed().subscribe(
(returnFeed: Feed[]) => {
this.currentFeed = returnFeed[0];
}
);
}
}
第二个有效,第一个无效。传递的 id 是正确的,并且在数据库中也可用,所以这很令人困惑。
提前致谢。