ฉันต้องการสร้างวิธีการในบริการที่ทำงานร่วมกับ AngularFire2 และส่งคืน Observable ฉันต้องการอัปเดตตัวนับ (การอัปเดตตัวนับอาจไม่ใช่ตัวอย่างที่สามารถปรับขนาดได้มากนัก แต่นั่นไม่สำคัญเลยที่นี่) นี่คือความพยายามของฉันในการให้บริการ:
import { Injectable } from '@angular/core';
import { AngularFire } from 'angularfire2';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
@Injectable()
export class MyService {
constructor(private af: AngularFire) { }
updateCounter(): Observable<any> {
let counterObserver = this.af.database.object('/variousdata/counter');
counterObserver.take(1).subscribe(res => {
let counter = res.$value;
return this.af.database.object('/variousdata').update({counter: counter+1});
});
return counterObserver;
}
}
และฉันใช้มันแบบนี้:
let resultObservable = this.myService.updateCounter();
resultObservable.subscribe(
(obj) => {
console.log('result:', JSON.stringify(obj));
}
}
แต่ฉันได้รับเฉพาะผลลัพธ์แรก (รับค่าตัวนับ) ที่พิมพ์ไปยังคอนโซล ฉันจะได้รับอันที่สองด้วย (หรือเพียง) ได้อย่างไร?
ฉันได้รับแรงบันดาลใจจากตัวอย่างที่พบใน https://stackoverflow.com/questions/39851104/observable-type-with-two-http-get-calls-in-angular-2 แต่ตัวอย่างนี้ใช้งานได้ไม่ดีนักสำหรับกรณี Firebase ของฉัน ดังนั้นฉันจึงพยายามแก้ไข...