2016-07-29 39 views
1

火力地堡控制台只允许设置电子邮件地址和密码,没有任何选项来保存用户的个人资料,但是这可以通过使用代码来完成:Firebase - 如何永久保存用户个人资料?

user.updateProfile({ 
    displayName: "Chinmay Sarupria" 
}).then(function() { 
    console.log(user.displayName); 
}, function(error) { 
    console.log(error); 
}); 

如果这是保存用户数据的方式永久那么它是不可能的为每个用户编写代码只是为了保存他们的displayName,或者是通过代码永久性完成,目前它正在为我工​​作,但我不确定它是否会永远保持这种状态。

当然,我可以将用户数据保存在实时数据库中,然后根据用户的uid获取它,但是如果将用户数据保存在用户变量中是可能的,那么这比从数据库获取数据要好得多。

回答

0

在引用用户对象后,您可以在该用户的UID下更新值。

var rootRef = new Firebase('https://yourapp.firebaseio.com'); 
// Check the current user login status and redirect if not logged in 
var user = rootRef.getAuth(); 
if (user) { 
    var user = rootRef.getAuth(); 
    var userRef = rootRef.child('users').child(user.uid); 
    ... do something with the logged in user... 
} 

function writeData() { 
    var user = rootRef.getAuth(); 
    var userRef = rootRef.child('users').child(user.uid); 
    var profileRef=userRef.child('profile').push(); 
    profileRef.update ({ 
    name: "Tony", 
    position: "Developer" 
    }); 
}; 

这应该给你的用户轮廓的结构是这样的:

} 
    "users" : { 
    "067f75bf-4a07-473e-82e5-d9a5ee11be17" : { 
     "profile" : { 
     "-KN2dG5X4lLpp0fwfsXK" : { 
     "name" : "Tony", 
     "position" : "Developer" 
     } 
    } 
    } 
} 

注意推()函数为您提供了随机产生的密钥。你可能不需要它。

希望这会有所帮助。

+2

请不要将用户配置文件存储在按键下。除非'/ users/$ uid/profile'下的每个用户需要多个节点,否则应该将数据存储为'/ users/$ uid/name','/ users/$ uid/position'等。 –

相关问题