2016-11-10 1 views
1

Je suis nouveau à Polymer et je suis bloqué sur la définition des données de base de données. J'ai réussi à faire fonctionner l'authentification par email et j'ai besoin de sauvegarder les données utilisateur après la création de l'utilisateur. J'initialise l'application avec l'élément firebase-app.Comment obtenir la référence Firebase lors de l'utilisation de Polymerfire?

Voici la partie importante:

this.$.auth.createUserWithEmailAndPassword(email, pass).then(function (user) { 
        user.sendEmailVerification(); 
        document.getElementById("emaildialog").toggle(); 
        var view = document.getElementById("r_view"); 

        firebase.database().ref('/user/' + user['uid']).set({ 
         name: view.name, 
         surname: view.surName 
        }).catch(function (err) { 
         console.log(err.message); 
        }); 
       }) 

utilisateur est créé avec succès, mais les données de l'utilisateur ne sera pas sauvé et

firebase.database is not a function"

erreur est levée. Je suppose que c'est parce que je n'ai pas accès à la fonction firebase.database dans la portée. J'ai trouvé many ways comment résoudre le problème en utilisant du JavaScript pur, mais je ne suis pas sûr de savoir quelle est la "voie Polymère" officielle.

EDIT: Je n'arrive toujours pas à le faire fonctionner. J'ai réussi à obtenir une référence de l'objet app, mais il semble qu'il n'y ait pas de méthode de base de données disponible. J'ai écrit une fonction simple pour le débogage:

debugFunction: function() { 
     if (!!this.user) { 
      var fb = this.$.auth.app; 
      console.log(!!fb); // Output is true, 
      var database = fb.database(); 
     } 
    } 

je reçois le "Uncaught TypeError: fb.database est pas une fonction (...)" une fois de plus.

Merci à l'avance, Jan

Répondre

2

Vous pouvez obtenir la référence de l'application firebase dans votre élément firebase-auth. Assurez-vous de le faire en dehors de la fonction de rappel afin que vous n'ayez pas à traiter avec la portée correcte de this. Si vous devez, vous pouvez faire .bind ou des fonctions de flèche.

var app = this.$.auth.app; 

Puis, après que vous pouvez faire app.database() en remplacement de celui firebase.