尝试制作一个更新Firebase并返回Observable的Angular2服务

时间:2016-11-08 09:50:53

标签: angular firebase firebase-realtime-database

我想在一个与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案例没有那么好用,所以我试图改变它......

0 个答案:

没有答案