กำลังพยายามสร้างบริการ 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