1

Firestoreから単一のドキュメントを取得したい。だから私はコレクション内のドキュメントのリスト(私はそれを行う方法を知っている)を意味するものではありません。のは、私は、文書のキーと値のペアの1知っているとしましょう、私は角4Firestore:単一のドキュメントを取得する

に単一のドキュメントデータを返すために

interface Occupations { 
 
\t duration: number; 
 
\t id_entity: number; 
 
\t id_job: number; 
 
\t id_user: number; 
 
\t salary: number; 
 
\t start_time: number; 
 
} 
 

 
occupationDoc:AngularFirestoreDocument<Occupations>; 
 
occupation: Observable<Occupations>;
<h1>A specific post:</h1> 
 

 
    <h3>{{ (occupation | async)?.salary }}</h3> 
 
    <p>{{ (occupation | async)?.id_user }}</p> 
 
    <p>{{ (occupation | async)?.duration }}</p> 
 
    <p>{{ (user | async)?.lastName }}</p>

答えて

1

使用flatmapを文書を検索し、取得したいと思います:

最初に.flatMap()プロパティをインポートします。

import { AngularFirestore } from 'angularfire2/firestore'; 
import 'rxjs/add/operator/mergeMap'; 

そして、あなたのコレクションを照会し、1つの文書に制限:

this.afs.collection('collection', ref => ref.where('value', '==', true) 
.limit(1)).valueChanges().flatMap(result => result); 

その後、あなたはそれを購読することができ、それがflatenedの代わりにJSON配列を返します。

EDIT:

そして、あなたはちょうど直接あなたのhtmlでそれを使用するには、このように行うことができます:HTMLコードで

this.userInfo = this.afs.collection('collection', ref => ref.where('value', 
'==', true).limit(1)).valueChanges().flatMap(result => result); 

<p>{{ (userInfo | async)?.duration }}</p> 
+0

ありがとうございました!私はまさにそれをしました。加えて、私が望むところに到達するためのいくつかの他のステップ。私は新しい答えで完全なコードを投稿します。 – Eric

+0

あなたはただ非同期パイプを使用して結果を直接解析することができます。 {{(variable | async)?. duration}} –

+0

元の質問で私が行ったことではありませんか?またはあなたは何かを考えている – Eric

0

これは私が来たソリューションです。上に戻る:

//HTML 
{{userInfo}} 

//TypeScript 
this.afs.collection('Occupations', 
ref => ref.where('id_user', '==', this.idAuth) 
.limit(1)) 
.valueChanges() 
.flatMap(result => result) 
.subscribe(
    v => { 
     let y = JSON.parse(JSON.stringify(v)); 
     this.userInfo = y.duration;     
    }, 
    (error) => { 
      console.log(error); 
    },() => { 
     console.log('Finished'); 
    }); 
関連する問題