【发布时间】:2019-06-06 18:19:01
【问题描述】:
我正在尝试在注册期间使用 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!
}
【问题讨论】:
-
请注意,
accountsCollection.doc(userUid).set(account)将返回一个包含 void 而不是 DocumentReference 的 Promise,请参阅 firebase.google.com/docs/reference/js/… -
谢谢!这让我走上了正轨。
标签: firebase vue.js google-cloud-firestore firebase-admin