我使用Ionic2
和AngularFire2
。我正在使用rxjs
Observable
。我有以下代碼:可觀察混亂
findChatsForUid(uid: string): Observable<any[]> {
return this.af.database.list('/chat/', {
query: {
orderByChild: 'negativtimestamp'
}
}).map(items => {
const filtered = items.filter(
item => (item.memberId1 === uid || item.memberId2 === uid)
);
return filtered;
});
}
和
deleteChatsAndMessagesForUid(uid: string): Promise<any> {
return new Promise<any>((resolve) => {
let promiseArray: Promise<any>[] = [];
this.findChatsForUid(uid).map(items => {
return items;
}).forEach((chatItems) => {
for (let i: number = 0; i < chatItems.length; i++) {
promiseArray.push(this.deleteChat(chatItems[i], true));
}
Promise.all(promiseArray).then(() => {
resolve(true);
});
});
});
}
在第二個功能,你可以看到我從第一個檢索Observable
,並通過每個項目使用forEach
功能的迴路。
我的問題是,因爲這是一個Observable
,總是有一個對象的句柄。所以,當我做到以下幾點:
deleteChatsAndMessagesForUid(uid).then(() => {
user.delete().then(() => {
...
}
}
這將導致以下錯誤,因爲刪除的用戶仍然在試圖觀察Observable
。
Error: Uncaught (in promise): Error: permission_denied at /chat: Client doesn't have permission to access the desired data. Error: permission_denied at /chat: Client doesn't have permission to access the desired data.
問題
有沒有一種方法來檢索數據,而仍然被連接到Observable
?這樣我可以自由刪除關聯的用戶?還是有更好的方法來處理這個問題?
感謝
謝謝!第一個()函數做到了。 – Richard