我已经使用了firebase登录。它已成功登录。我在登录页面配置文件中有四页,出售,购买和关于我们。当我在个人资料和销售页面中检索当前用户的uid的值时。但是我在购买页面中变为空,为什么会这样呢?
JS 对于用户页面
function save_user()
{
const uid = document.getElementById('user_id');
const userpwd = document.getElementById('user_pwd');
const btnregister=document.getElementById('btn-action');
//btnregister.addEventListener('click', e=>
//{
const email=uid.value;
const pass=userpwd.value;
firebase.auth().signInWithEmailAndPassword(email, pass).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
console.log(error.Message);
});
firebase.auth().onAuthStateChanged(function(user) {
if(user) {
window.location='userpage.html';
}
});
JS
对于购买页面,其中firebase.auth()。currentUser.uid显示空代码
var fbRef = firebase.database().ref().child("Sell_Products");
var user = firebase.auth().currentUser.uid;
alert(user); /*Here it's showing null
fbRef.on("child_added", snap => {
var key=snap.key;
alert('HEllo');
alert(key);
var name = snap.child("name").val();
var price = snap.child("price").val();
var category = snap.child("category").val();
var description = snap.child("description").val();
var image = snap.child("image").val();
$("#ex-table").append("<tr><td><a href=\"auction.html?itemKey="+key+"\"><img src=" + image + "/img></a></td><td>" + name + "</td><td>" + price + "</td><td>" + category + "</td><td>" + description + "</td></tr>" );
});
答案 0 :(得分:1)
获取登录用户的推荐方法是您在userPage上处理重定向的方式(使用观察者):
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
console.log(user);
// User is signed in.
} else {
// No user is signed in.
}
});
来源:https://firebase.google.com/docs/auth/web/manage-users
编辑:所以你应该有这样的东西:
var fbRef = firebase.database().ref().child("Sell_Products");
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
console.log(user);
var user = firebase.auth().currentUser.uid;
alert(user); //you should have your user here!
fbRef.on("child_added", snap => {
var key=snap.key;
alert('HEllo');
alert(key);
var name = snap.child("name").val();
var price = snap.child("price").val();
var category = snap.child("category").val();
var description = snap.child("description").val();
var image = snap.child("image").val();
$("#ex-table").append("<tr><td><a href=\"auction.html?itemKey="+key+"\"><img src=" + image + "/img></a></td><td>" + name + "</td><td>" + price + "</td><td>" + category + "</td><td>" + description + "</td></tr>" );
});
} else {
console.log('No user is signed in.');
}
});
答案 1 :(得分:0)
我也遇到了这样的问题。实际上,在未初始化身份验证之前,它无法显示某些数据,但是当我们使用firebase.auth().CurrentUser
时,即使在身份验证未初始化之前,它仍会获取数据。您可以在代码中设置超时,直到完全初始化auth。
我使用这种方法来获取数据。
const authPromise=()=>{
return new Promise((resolve,reject)=>{
const user = firebase.auth().currentUser;
console.log(user.email)
})
}
setTimeout(authPromise,2000)