Как получить ссылку на Firebase при использовании Polymerfire?

Я новичок в Polymer, и я застрял в настройке данных базы данных. Мне удалось заставить работать аутентификацию по электронной почте, и мне нужно сохранить данные пользователя после создания пользователя. Я инициализирую приложение с помощью элемента firebase-app.

Вот важная часть:

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);
                    });
                })

Пользователь успешно создан, но данные пользователя не сохраняются и

firebase.database не является функцией"

вылетает ошибка. Я думаю, это потому, что у меня нет доступа к функции firebase.database в области видимости. Я нашел много способов, как решить проблему с помощью чистого JavaScript, но я не уверен, что является официальным "Полимерным способом". ".

РЕДАКТИРОВАТЬ: я все еще не могу заставить его работать. мне удалось получить ссылку на объект приложения, но похоже, что нет доступного метода базы данных. Я написал простую функцию для отладки:

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

Я снова получаю «Uncaught TypeError: fb.database не является функцией (…)».

Заранее спасибо, Ян


person Jan Beneš    schedule 10.11.2016    source источник


Ответы (1)


Вы можете получить ссылку на приложение firebase внутри вашего элемента firebase-auth. Убедитесь, что вы делаете это за пределами функции обратного вызова, чтобы вам не пришлось иметь дело с получением правильной области действия this. Если необходимо, вы можете использовать .bind или стрелочные функции.

var app = this.$.auth.app;

Затем после этого вы можете сделать app.database() в качестве замены firebase.

person Neil John Ramal    schedule 11.11.2016