我是 Firebase 的新手,正在使用电子邮件/密码登录方法。我的方法工作正常但是在我的注册表单上我有其他字段我想输入到数据库中。我对电子邮件/密码注册方法的理解是,任何其他字段都必须与用户注册时电子邮件/密码身份验证的存储方式分开存储。
我在我的数据库中创建了一个子部分来存储称为用户的其他用户详细信息。这是它在 Firebase 中的样子:
这是我调用(在 React 中)创建新用户的函数:
signUp(e) {
e.preventDefault();
var firstName = $('.signup-first-name').val();
var lastName = $('.signup-last-name').val();
var userName = $('.signup-user-name').val();
var password = $('.signup-user-password').val();
var email = $('.signup-email').val();
var auth = firebase.auth();
const promise = auth.createUserWithEmailAndPassword(email,password).then(function(user) {
var user = firebase.auth().currentUser;
user.updateProfile({
displayName: userName,
}).then(function() {
// Update successful.
// new db code here
var ref = new firebase("https://music-app-7a4d3.firebaseio.com");
ref.onAuth(function(authData) {
ref.child("users").child(authData.uid).set({
firstName: firstName,
lastName: lastName
})
})
// end new db code here
}, function(error) {
// An error happened.
});
}, function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
if (errorCode == 'auth/weak-password') {
alert('The password is too weak.');
} else {
console.error(error);
}
});
promise.catch(e => console.log(e.message));
firebase.auth().onAuthStateChanged(firebaseUser => {
if(firebaseUser) {
console.log(firebaseUser)
} else {
console.log("not logged in")
}
});
}
按照我在此处找到的另一个示例进行操作:
Add Extra Details on Firebase User Table
但不确定我在这个过程中哪里出了问题。这方面的文档相当薄弱,没有帮助!
最佳答案
旧版本已完成 firebase 对象的初始化,请参阅 https://firebase.google.com/docs/web/setup ,它使用
firebase.initializeApp(config)
而不是new firebase()
使用此代码使用用户的附加字段更新您的数据库
firebase.database().ref('users/' + user.uid).set({ firstName: firstName, lastName: lastName })
关于javascript - Firebase - 将额外的用户数据添加到单独的数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40286442/