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