【发布时间】:2018-08-13 16:34:30
【问题描述】:
在带有 FireStore 和 angularfire2 的 Angular 5 中,通过控制器从服务获取文档时处理错误的正确方法是什么?
服务:
getInviteById( inviteId: string ): Promise<any> {
// get requested invite from firestore
var inviteDocument = this.afs.collection( 'invites' ).doc( inviteId );
let invite = inviteDocument.ref.get().then( doc => {
// if document exists
if (doc.exists) {
// return id and data
const id = doc.id;
var data = doc.data() as any;
return { id, ...data };
// if document does not exist
} else {
console.log("Error: No such document!");
// WHAT DO I NEED TO RETURN HERE???
}
// if other error
}).catch(function(error) {
console.log("Error: Getting document:", error);
// WHAT DO I NEED TO RETURN HERE???
});
// return invite
return invite;
};
控制器:
this.inviteService.getInviteById( inviteId )
.then( resolve => {
this.invite = resolve;
})
.catch( err => {
// THIS NEVER GETS CALLED !
console.log("INVITE-COMPONENT: Cannot get invite for this id." );
});
如果 FireStore 中存在具有邀请 ID 的文档,则一切正常。但是,如果 FireStore 中没有邀请 id 的文档,则服务将记录“错误:没有此类文档!” (如预期的那样),但该组件不会进入自己的 catch 案例。
如何处理我的组件中的“没有此类文档”错误,以便我可以相应地修改我的 UI?
【问题讨论】:
标签: angular promise google-cloud-firestore angularfire2