Firestore无法将用户数据写入数据库

时间:2019-01-11 19:42:44

标签: firebase vue.js google-cloud-firestore firebase-admin

我正在尝试使用FirebaseUI Web和Vue.js在注册过程中将用户数据加载到Firestore中。该帐户在Firebase一侧创建。但是,没有填充数据库-我没有收到任何错误,但是alert('Signed in as ' + displayName);确实显示了正确的信息,并且用户已登录。

更新:我通过在callbacks之外创建一个函数来重构代码,以反映错误处理-问题没有改变(没有错误&&没写)。

firbaseui-config.js:

import firebase   from 'firebase';
import firebaseui from 'firebaseui'

import { accountsCollection } from '@/services/registerFirebase'

export const FBuiConfig = {
    signInSuccessUrl: '/dashboard',
    signInFlow: 'popup',

    callbacks: {
        signInSuccessWithAuthResult: function(authResult) {
            addUser(authResult);
            return false;
        },

        uiShown: function() {
            document.getElementById('app-drawer').style.display = 'none';
            document.getElementById( 'app-toolbar').style.display = 'none';
        },
    },

    signInOptions: [
        firebase.auth.GoogleAuthProvider.PROVIDER_ID,
        {
            provider: firebase.auth.EmailAuthProvider.PROVIDER_ID,
            requireDisplayName: true,
            forceSameDevice: true,
        },

        firebaseui.auth.AnonymousAuthProvider.PROVIDER_ID,
    ],

    tosUrl: '/tos',
    privacyPolicyUrl: function() {
        window.location.assign('/pp');
    }
};

function addUser(authResult) {
    const user = authResult.user;
    const userUid = user.uid;
    const displayName = user.displayName; 
    const account = {
        useruid: userUid,
        calendarEvents: []
    }
    accountsCollection.doc(userUid).set(account)
    .then(function (docRef) {
        console.log('Document written with ID: ', docRef.id)
    })
    .catch(function (error) {
        var errorCode = error.code;
        var errorMessage = error.message;
        alert.error(
            'Error adding document: ', errorCode + ': ' + errorMessage
        )
    })
    alert('Signed in as ' + displayName); // <-- WORKS!
}

1 个答案:

答案 0 :(得分:0)

非常感谢@RenaudTarnec。数据正在返回a:visited img,不幸的是,Auth提供程序在发生这种情况时未返回任何错误。

通过使用所需的返回数据之前创建日志,null有助于解决该问题。

下面是最后一个工作示例。

fb.usersCollection.doc(account.userUid).set(account)