我想在一个与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));
}
}
但是我只将第一个结果(获得计数器值)打印到控制台。我怎样才能得到(或只是)第二个呢?
我对Observable type with two http.get calls in Angular 2中的示例有点启发,但这个示例对我的Firebase案例没有那么好用,所以我试图改变它......