Firebase Web JS:如何根据userID(uid)编写数据? |用户> uid> {姓名,电子邮件等}?

时间:2017-10-03 02:26:54

标签: javascript firebase firebase-realtime-database

我真的厌倦了这个firebase网络应用程序。简而言之,我不能在firebasedatabase上写任何依赖于“USER ID /(user.uid)”的数据。下面的代码段不起作用。怎么了?

我收到此错误; “未捕获的ReferenceError:未定义用户     在index.html:206 (匿名)@ index.html:206

<script>
    var config = {
        apiKey: 
        authDomain: 
        databaseURL: 
        projectId: 
        storageBucket: 
        messagingSenderId: 
    };
    firebase.initializeApp(config);

    initApp = function () {
        firebase.auth().onAuthStateChanged(function (user) {
            if (user) {
                // User is signed in.
                var email = user.email;
                var uid = user.uid;
                var providerData = user.providerData;
                user.getIdToken().then(function (accessToken) {
                    document.getElementById('LogOut').textContent = 'Log out';
                    var DT = JSON.stringify({
                        displayName: displayName,
                        email: email,
                        emailVerified: emailVerified,
                        phoneNumber: phoneNumber,
                        photoURL: photoURL,
                        uid: uid,
                        accessToken: accessToken,
                        providerData: providerData
                    }, null, '  ');

                    console.log(DT);

                });
            } else {
                // User is signed out.
                document.getElementById('LogOut').textContent = 'Log in';
            }
        }, function (error) {
            console.log(error);
        });
    };


    function signOut() {
        firebase.auth().signOut();
    }
    document.getElementById("LogOut").addEventListener("click", signOut);

    window.addEventListener('load', function () {
        initApp()


    });

    var userId = user.uid;
    var email = user.email;

    function writeUserData(userId, email) {
        firebase.database().ref('users/' + userId).set({
            username: userId,
            email: user.email

        });
    }

    document.getElementById("submitBtn").addEventListener("click", writeUserData);

</script>

1 个答案:

答案 0 :(得分:0)

您尝试在未定义user变量的地方使用user变量。 onAuthStateChanged变量仅在user回调中可用。这意味着您应该将需要initApp = function () { firebase.auth().onAuthStateChanged(function (user) { if (user) { // User is signed in. var email = user.email; var uid = user.uid; firebase.database().ref('users/' + uid).set({ username: uid, email: user.email }); var providerData = user.providerData; user.getIdToken().then(function (accessToken) { document.getElementById('LogOut').textContent = 'Log out'; var DT = JSON.stringify({ displayName: displayName, email: email, emailVerified: emailVerified, phoneNumber: phoneNumber, photoURL: photoURL, uid: uid, accessToken: accessToken, providerData: providerData }, null, ' '); console.log(DT); }); } else { // User is signed out. document.getElementById('LogOut').textContent = 'Log in'; } }, function (error) { console.log(error); }); }; 变量的所有代码移动到回调中:

var userId = user.uid;
var email = user.email;

function writeUserData(userId, email) {
    firebase.database().ref('users/' + userId).set({
        username: userId,
        email: user.email

    });
}

此时,请删除此代码:

m = [[45, 35, 52, 75], [25, 30, 65 ], [50, 43, 32, 22 ]]