Saya ingin membuat metode pada layanan yang bekerja dengan AngularFire2 dan mengembalikan Observable. Saya ingin memperbarui penghitung (memperbarui penghitung mungkin bukan contoh yang dapat diskalakan, tetapi itu tidak terlalu penting di sini). Ini adalah upaya saya untuk layanan ini:
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;
}
}
Dan saya menggunakannya seperti ini:
let resultObservable = this.myService.updateCounter();
resultObservable.subscribe(
(obj) => {
console.log('result:', JSON.stringify(obj));
}
}
Tapi saya hanya mendapatkan hasil pertama (mendapatkan nilai penghitung) yang dicetak ke konsol. Bagaimana saya bisa mendapatkan juga (atau hanya) yang kedua?
Saya agak terinspirasi oleh contoh yang ditemukan di https://stackoverflow.com/questions/39851104/observable-type-with-two-http-get-calls-in-angular-2, tetapi contoh ini tidak berfungsi dengan baik untuk kasus Firebase saya, jadi saya telah mencoba mengubahnya...