Mencoba membuat layanan Angular2 yang memperbarui Firebase dan mengembalikan Observable

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...


person EricC    schedule 08.11.2016    source sumber
comment
Nah, jika Anda mengambil (1), maka Anda seharusnya mendapatkan satu rekaman!   -  person Fals    schedule 08.11.2016
comment
Saya hanya ingin mendapatkan nilai penghitung satu kali... Bagaimana saya bisa mengambil nilai penghitung satu kali dan kemudian menaikkannya lalu memperbaruinya di server (dan pada saat yang sama mengembalikan Observable setelah selesai diperbarui) ?   -  person EricC    schedule 08.11.2016
comment
Saya baru mengujinya (mengubah pengambilan menjadi 2), dan saya masih mendapatkan satu hasil saja...   -  person EricC    schedule 08.11.2016