Firebase:获取用户数据对象并在不刷新页面的情况下带回用户配置文件?
Firebase: Get userdata obj and bring back the user profile without page refresh?
我已经尝试了 2 天,但如果我想从数据库中获取用户配置文件,我需要刷新页面。有什么方法可以做到 无需 页面刷新?我需要使用某种 jquery ajax 来实现吗?可能吗?
这是我的方法 2,它们可以正常工作,但需要刷新页面才能恢复我的用户配置文件。
function authDataCallback(authData) {
if (authData) {
var fb = new Firebase('https://blistering-torch-8000.firebaseio.com/users/public/');
fb.child(authData.uid).on('value', function(data) {
var myData = data.val();
var dateString = myData.date.split(' ').slice(0, 4).join(' ');
$('.profile').append('<li>Username: ' + myData.username + '</li>');
$('.profile').append('<li>Joined: ' + dateString + '</li>');
});
var fb = new Firebase('https://blistering-torch-8000.firebaseio.com/users/private/');
fb.child(authData.uid).on('value', function(data) {
var myData = data.val();
$('.profile').append('<li>Email: ' + myData.email + '</li>');
});
} else {
console.log('Profile: No data, no one is logged in');
}
}
fb.onAuth(authDataCallback);
或
var fb = new Firebase('https://blistering-torch-8000.firebaseio.com/');
var getAuth = fb.getAuth();
function getProfile(authData) {
if (authData) {
var fb = new Firebase('https://blistering-torch-8000.firebaseio.com/users/public/');
fb.child(authData.uid).on('value', function(data) {
var myData = data.val();
var dateString = myData.date.split(' ').slice(0, 4).join(' ');
$('.profile').append('<li>Username: ' + myData.username + '</li>');
$('.profile').append('<li>Joined: ' + dateString + '</li>');
});
var fb = new Firebase('https://blistering-torch-8000.firebaseio.com/users/private/');
fb.child(authData.uid).on('value', function(data) {
var myData = data.val();
$('.profile').append('<li>Email: ' + myData.email + '</li>');
});
} else {
console.log('Profile: No data, no one is logged in');
}
}
getProfile(getAuth);
数据库规则:
{
"rules":
{
"users":
{
"public":
{
// allow me to list users by name
".read": true ,
".write": true
},
"private":
{
"$uid":
{
// only readable by owner
".read": "auth.uid === $uid",
".write": true
}
}
}
}
}
onAuth
和 getAuth
return null
都未通过身份验证。修复您的 login/function 调用顺序。
我已经尝试了 2 天,但如果我想从数据库中获取用户配置文件,我需要刷新页面。有什么方法可以做到 无需 页面刷新?我需要使用某种 jquery ajax 来实现吗?可能吗?
这是我的方法 2,它们可以正常工作,但需要刷新页面才能恢复我的用户配置文件。
function authDataCallback(authData) {
if (authData) {
var fb = new Firebase('https://blistering-torch-8000.firebaseio.com/users/public/');
fb.child(authData.uid).on('value', function(data) {
var myData = data.val();
var dateString = myData.date.split(' ').slice(0, 4).join(' ');
$('.profile').append('<li>Username: ' + myData.username + '</li>');
$('.profile').append('<li>Joined: ' + dateString + '</li>');
});
var fb = new Firebase('https://blistering-torch-8000.firebaseio.com/users/private/');
fb.child(authData.uid).on('value', function(data) {
var myData = data.val();
$('.profile').append('<li>Email: ' + myData.email + '</li>');
});
} else {
console.log('Profile: No data, no one is logged in');
}
}
fb.onAuth(authDataCallback);
或
var fb = new Firebase('https://blistering-torch-8000.firebaseio.com/');
var getAuth = fb.getAuth();
function getProfile(authData) {
if (authData) {
var fb = new Firebase('https://blistering-torch-8000.firebaseio.com/users/public/');
fb.child(authData.uid).on('value', function(data) {
var myData = data.val();
var dateString = myData.date.split(' ').slice(0, 4).join(' ');
$('.profile').append('<li>Username: ' + myData.username + '</li>');
$('.profile').append('<li>Joined: ' + dateString + '</li>');
});
var fb = new Firebase('https://blistering-torch-8000.firebaseio.com/users/private/');
fb.child(authData.uid).on('value', function(data) {
var myData = data.val();
$('.profile').append('<li>Email: ' + myData.email + '</li>');
});
} else {
console.log('Profile: No data, no one is logged in');
}
}
getProfile(getAuth);
数据库规则:
{
"rules":
{
"users":
{
"public":
{
// allow me to list users by name
".read": true ,
".write": true
},
"private":
{
"$uid":
{
// only readable by owner
".read": "auth.uid === $uid",
".write": true
}
}
}
}
}
onAuth
和 getAuth
return null
都未通过身份验证。修复您的 login/function 调用顺序。