Попытка создать службу Angular2, которая обновляет Firebase и возвращает Observable

Я хочу создать метод службы, который работает с 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, поэтому я попытался его изменить...


person EricC    schedule 08.11.2016    source источник
comment
Ну, ты сделал дубль(1), значит ты должен получить одну пластинку!   -  person Fals    schedule 08.11.2016
comment
Я просто хочу получить значение счетчика один раз... Как я могу взять значение счетчика один раз, а затем увеличить его, а затем обновить на сервере (и в то же время вернуть Observable, когда он закончит обновление) ?   -  person EricC    schedule 08.11.2016
comment
Я только что проверил это (изменив дубль на 2), и я все еще получаю только один результат...   -  person EricC    schedule 08.11.2016