2017-07-29 4 views
1

Ich benutze Firebase Cloud-Funktion, um Benutzer zu meiner Datenbank nach der Registrierung hinzufügen. Ich möchte hinzufügen (wenn Benutzer erstellt wird) einen Spitznamen zum Beispiel. Im Registrierungsformular gibt es ein Feld für den Kurznamen, aber wie kann ich ihm die Firebase-Funktion senden, damit er dem Benutzer in der Datenbank hinzugefügt wird?Senden Sie Daten an Firebase Cloud-Funktion

Dies ist Feuerbasis Funktion:

const functions = require('firebase-functions'); 
const admin = require('firebase-admin'); 

admin.initializeApp(functions.config().firebase); 
const ref = admin.database().ref() 

exports.createUserAccount = functions.auth.user().onCreate(event=>{ 
    const uid = event.data.uid 
    const email = event.data.email 
    const photoUrl = event.data.photoUrl || 'https://vignette1.wikia.nocookie.net/paulblartmallcop/images/9/9c/Person-placeholder-male.jpg/revision/latest?cb=20120708210100' 

    const newUserRef = ref.child(`/users/${uid}`) 
    return newUserRef.set({ 
    photoUrl: photoUrl, 
    email: email, 
    }) 
}); 

Das Register Form in einer anderen Datei ist (Register.js), wie kann ich Daten von dort auf die Funktion schicken?

Ich nenne createUserAccount nicht überall, es wird ausgelöst, wenn diese Funktion geschieht:

handlePress = (navigation)=>{ 
if(this.state.password == this.state.verify){ 
    firebaseRef.auth().createUserWithEmailAndPassword(this.state.email, this.state.password).then((newUser)=>{ 
    const resetAction = NavigationActions.reset({ 
     index: 0, 
     actions: [ 
     NavigationActions.navigate({ routeName: 'Home'}) 
     ] 
    }) 
    navigation.dispatch(resetAction) 
    }).catch(function(error){ 
    console.log(error); 
    }); 
}else{ 
    //password not match, show error. 
} 
} 

Vielen Dank im Voraus!

Antwort

1

Sie müssen eine Firebase-Cloud-Funktion nicht verwenden, um dem Benutzer einen Kurznamen hinzuzufügen (wenn der Benutzer bereits erstellt wurde).

einfach von Ihrem js nennen:

ref.child("users").child(uid).child("nickname").set(nickname); 

Andere Lösung

Sie den Benutzer erstellen kann nur dann, wenn der Spitzname gefüllt ist. Sie können es im user.displayName speichern und über Ihren onCreate-Trigger darauf zugreifen.

exports.createUserAccount = functions.auth.user().onCreate(event=>{ 
    const user = event.data; // The Firebase user. 

    const uid = user.uid; 
    const email = user.email; 
    const nickname = user.displayName; 
    const photoUrl = user.photoUrl || 'https://vignette1.wikia.nocookie.net/paulblartmallcop/images/9/9c/Person-placeholder-male.jpg/revision/latest?cb=20120708210100'; 

    const newUserRef = ref.child('/users/${uid}'); 

    return newUserRef.set({ 
     nickname: nickname, 
     photoUrl: photoUrl, 
     email: email 
    }); 
}); 
+0

Danke, kann ich ein Beispiel für den von mir bereitgestellten Code haben? Ich bin neu dazu und immer noch kämpfen –

+0

Für die andere Lösung? Ich habe meine Antwort aktualisiert – Pipiks

+0

Danke! ....... –