【发布时间】:2019-03-25 22:03:25
【问题描述】:
我正在尝试从 Firebase Cloud Firestore 获取数据,并在加载到浏览器时将其加载到我的 Reactjs 应用程序中。但是,我收到以下错误。
错误信息未处理的拒绝(TypeError):无法读取未定义的属性“then”
错误发生在以下行:
firebaseService.getUserData(authUser.uid).then(user => { ...
我得到一个初始页面加载,然后延迟大约两秒钟,然后弹出错误。所以我怀疑它来自一些缺失的承诺或回调没有得到正确处理。我曾尝试在多个地方使用asyncawait,但均未成功。
如何解决这个问题以正确获取和加载我的数据?
Auth.jsimport firebaseService from 'firebaseService';
...
class Auth extends Component {
...
firebaseCheck = () => {
firebaseService.onAuthStateChanged(authUser => {
if (authUser) {
this.props.showMessage({ message: 'Logging in with Firebase' });
// Retrieve user data from Firebase
firebaseService.getUserData(authUser.uid).then(user => { // <-- error occurs here
this.props.setUserDataFirebase(user, authUser);
this.props.showMessage({ message: 'Logged in with Firebase' });
})
}
});
};
}
firebaseService.js
getUserData = userId => {
if (!firebase.apps.length) {
return;
}
const docRef = this.firestore.doc('users/myuserid');
docRef.get().then(doc => {
if (doc.exists) {
console.log("Document data:", doc.data());
return doc.data;
} else {
console.log("No such document!");
}
}).catch(error => {
console.log("Error getting document:", error);
});
};
【问题讨论】:
标签: javascript reactjs firebase asynchronous google-cloud-firestore