3

ngOnInit()のget()メソッドが気に入らない部分です。 "[ts]プロパティ 'get'がタイプ 'AngularFirestoreDocument < {}>'に存在しません。 ここでは、1つのドキュメントにget()メソッドを使用するように表示されていますが、そのメソッドは私にとっては好きではありませんか?Firebase Firestore get()が動作しない

import { Component, OnInit, Pipe } from '@angular/core'; 
import { FormBuilder, FormGroup, Validators } from '@angular/forms'; 
import { Router, ActivatedRoute } from '@angular/router'; 

import { AngularFirestore, AngularFirestoreCollection, AngularFirestoreDocument } from 'angularfire2/firestore'; 
import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 

import { User } from './user'; 

@Component({ 
    selector: 'user-form', 
    templateUrl: 'user-form.component.html' 
}) 
export class UserFormComponent implements OnInit { 
form: FormGroup; 
title: string; 
user = new User(); 
id; 
userDoc: AngularFirestoreDocument<User>; 
singleUser: Observable<User>;  

constructor(fb: FormBuilder, private afs: AngularFirestore, private _router: Router, private _route: ActivatedRoute) { 

    // 
    this.form = fb.group({ 
     //username: ['', Validators.required], 
     email: ['', Validators.required], 
     title: ['', Validators.required] 
    }) 



} 

ngOnInit() { 
    this.title = "Update User"; 

    this._route.params.subscribe(params => { 
     this.id = params["id"]; 
    }); 

    if(!this.id) { 
     console.log("New User"); 
    } 
    else { 


     this.afs.collection("users").doc(this.id) 
     .get().then(function(doc) { 
      if (doc.exists) { 
       console.log("Document data:", doc.data()); 
      } else { 
       console.log("No such document!"); 
      } 
     }).catch(function(error) { 
      console.log("Error getting document:", error); 
     }); 


    } 

} 

// 
submit() { 
    console.log(this.user.title + " - " + this.user.email); 

    if (this.id) { 
     this.afs.doc('users/' + this.id).update({ 
      title: this.user.title, 
      email: this.user.email 
     }); ;              
    } 
    else{    
     this.afs.collection('users').add({ 
      name: this.user.title, 
      email: this.user.email 
     });       
    } 

    this._router.navigate(['']); 
} 

}

+0

を使用すると、[リンク](https://firebase.google.com/docs/firestore/query-data/get-dataに)詳細を確認した場合、あなたはそれを見つけることができます'firebase.firestore.DocumentReference'を返しますが、あなたは' angularfire2'を使用しています。 – sdey0081

答えて

5

実は、AngularFirestoreDocument<{}>get性質を持って、代わりに 使用AngularFirestoreDocument<{}>.refしません:

this.afs.collection("users") 
      .doc(this.id) 
      .ref 
      .get().then(function(doc) { 
       if (doc.exists) { 
        console.log("Document data:", doc.data()); 
       } else { 
        console.log("No such document!"); 
       } 
      }).catch(function(error) { 
       console.log("Error getting document:", error); 
      }); 
+1

あなたは正しいですが、私は文献のどこにもそのように見えませんか?私は別の何かをしなければなりませんか? – Mark

+0

変更が表示されますか? 'doc( 'xxxId')。ref.get()'を追加しました。 – sdey0081

+0

ここには表示されません。https://firebase.google.com/docs/firestore/query-data/get-data - これはどうでしたか?そして、私は別のやり方で何をしなければならないのですか.refを使用する必要はありませんか? – Mark

1

あなたは角度火を使っているので、構文は次のとおりです。以下:

this.afs.collection("users").doc(this.id).valueChanges(user => { 
    console.log(user); 
}); 

ここにドキュメントを読む:https://github.com/angular/angularfire2

関連する問題