2

私たちは、私たちの情報が私たちのDBにメールを送信しない理由を解決しようとしています。名前、姓などをFirebaseに保存したいのですが、メールを保存するだけです。私たちは何を間違っていますか?Firebaseのサインアップ時に追加フィールドを保存する

signup.ts:

import { Component } from '@angular/core'; 
import { SearchPage } from '../search/search'; 
import { MyBookingsPage } from '../my-bookings/my-bookings'; 
import { NavController, AlertController, LoadingController, Loading } from 'ionic-angular'; 
import { Auth, User, UserDetails, IDetailedError } from '@ionic/cloud-angular'; 

import { FormBuilder, FormGroup, Validators } from '@angular/forms'; 
import { AuthProvider } from '../../providers/auth/auth'; 
import { EmailValidator } from '../../validators/email'; 

@Component({ 
    selector: 'page-signup', 
    templateUrl: 'signup.html' 
}) 
export class SignupPage { 
    public signupForm:FormGroup; 
    public loading:Loading; 
    constructor(public navCtrl: NavController, public authProvider:AuthProvider, public formBuilder: FormBuilder, public user: User, public alertCtrl: AlertController, public loadingCtrl:LoadingController) { 

    this.signupForm = formBuilder.group({ 
    name: ['', Validators.compose([Validators.required])], 
    surname: ['', Validators.compose([Validators.required])], 
    birthday: ['', Validators.compose([Validators.required])], 
    licenseNum: [''], 
    email: ['', Validators.compose([Validators.required, EmailValidator.isValid])], 
    password: ['', Validators.compose([Validators.minLength(6), Validators.required])] 

    }); 

    } 
    signupUser(){ 
    if (!this.signupForm.valid){ 
     console.log(this.signupForm.value); 
    } else { 
     this.authProvider.signupUser(this.signupForm.value.name, 
     this.signupForm.value.surname, 
     this.signupForm.value.birthday, 
     this.signupForm.value.licenseNum, 
     this.signupForm.value.email, 
     this.signupForm.value.password) 
     .then(() => { 
     this.loading.dismiss().then(() => { 
      this.navCtrl.setRoot(MyBookingsPage); 
     }); 
     }, (error) => { 
     this.loading.dismiss().then(() => { 
      let alert = this.alertCtrl.create({ 
      message: error.message, 
      buttons: [ 
       { 
       text: "Ok", 
       role: 'cancel' 
       } 
      ] 
      }); 
      alert.present(); 
     }); 
     }); 
     this.loading = this.loadingCtrl.create(); 
     this.loading.present(); 
    } 
    } 

} 

auth.ts:

@Injectable() 
export class AuthProvider { 

    public fireAuth:firebase.auth.Auth; 
    public userProfileRef:firebase.database.Reference; 

    constructor(public http: Http) { 
    this.fireAuth = firebase.auth(); 
    this.userProfileRef = firebase.database().ref('/userProfile'); //linked to firebase node userProfile 
    console.log('Hello AuthProvider Provider'); 
    } 

    signupUser(name: string, surname: string, birthday: any, licenseNum: string, email: string, password: string): firebase.Promise<any> { 
    return this.fireAuth.createUserWithEmailAndPassword(email, password).then(newUser => { 
     this.userProfileRef.child(newUser.uid).set({ 
     name: name, 
     surname: surname, 
     birthday: birthday, 
     licenseNum: licenseNum, 
     email: email, 
     password: password 
     }); 
    }); 
    } 
} 

This is the Firebase result.

我々は問題がauth.tsでsignupUserであると思いますが、私たちは本当にしないでください知っている、私たちは私たちの構造に適合するオンラインを見つけることができません。可能であれば、プロジェクト全体をやり直す必要はありません。

ありがとうございます!

+0

私はあなたが.update()を使うべきだと思います。 .set()関数の代わりに – Surjeet

+0

これが解決しました!ありがとうございます:) – Samantha

+0

@Surjeet:OPが受け入れることができるように、回答を作成してください。よくやったbtw :) – garfbradaz

答えて

0

.set()の代わりに.update()関数を使用して、firebaseデータベースに情報を保存する必要があります。

関連する問題