AngularFire2を使用して、私は1つのFirestoreドキュメントからデータを取得しようとします。 どのような作品はです:私は一度だけのサブスクリプションのコードを実行したいAngularFire2 firestore take(1)on doc valueChanges
this.addressRef = afs.doc<Address>('addresses/key')
this.addressRef.valueChanges().subscribe(val => {......}
。通常は、これを達成するためにtake(1)を使用します(Firebase DBで動作します)。 しかし、このコード:
this.addressRef.valueChanges().take(1).subscribe(val => {......}
はエラーを与える:TypeError例外:。this.addressRef.valueChanges(...)を取る関数ではありません。
VSコードにはテイクアクションのリストがあります。これはAngularFire2のバグですか?これは間違っているのですか、データが取得された後にサブスクリプションを停止する他の(より良い)方法がありますか?私もトポロマイズを試みましたが、これも失敗しました。
私は既に同じコードを使用していますが、私のセットアップではtake()は動作しませんしかし、あなたのstackblitzを勉強した後、私は私の輸入が異なることがわかりました。私は彼らがVCによって自動生成されたと思います。私は "rxjs/operator/take"をインポートパスとして持っていました。あなたの例のように "rxjs/add/operator/take"に変更し、今度はtake()が動作します。完全なコードを提供していただきありがとうございます。私はこれらの異なる道についてさらに研究します。 – majodi
今、あなたは他のコードを書くためにuser.uidの例が必要になるたびに、subscribeの中でこれを行う必要がありますか?これにより、コードが奇妙でネストされたように見えます。あなたはデータベースから現在のユーザーのuidを取得できませんし、購読していないコンポーネント(htmlではありません)の中で何かしますか? – Ruben
@Rubenあなたはまだこれについて助けが必要ですか?短い答えは、はい - あなたが購読しなければならないということです。しかし、あなたはそれを一回以上呼び出す必要はありません:) – DauleDK