我在问这个问题之前研究过,但我找不到答案。
我在反应中制作了一个表格。当我单击该按钮时,它会使用createUserWithEmailAndPassword()方法创建一个用户。创建用户没有问题。我想添加额外的信息,比如;用户名:" Usernameeeee"到我的数据库。数据库将如下所示:
users {
userUid1: {name: "Name User 1"}
userUid2: {name: "Name User 2"}
....
}
当我使用createUserWithEmailAndPassword()时,它会创建一个用户并将其登录。但正如您所看到的,我需要当前用户的ID。我知道如何正常使用它,firebase.auth()。currenUser ...但是在创建用户时我无法捕获用户的ID。它返回null;
export function signUpUser({email, password}) {
return function (dispatch){
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(
() => dispatch({type: USER_SIGNUP_SUCCESS})
)
.then(console.log(firebase.auth().currentUser))
.catch(error => {
dispatch({type: USER_SIGNUP_FAIL, payload: error.message});
});
}
}
当我控制当前用户时,创建用户已完成但尚未登录。那么如何在创建用户时添加信息呢? (不是以其他方式登录后)
答案 0 :(得分:2)
好的,我找到了一天之后的答案。我希望这对其他人有所帮助。如您所知,主要问题是在用户登录之后立即获取用户ID ...
所以这个问题是:
export function signUpUser({email, password, username}) {
const db = firebase.database();
return function (dispatch){
firebase.auth().createUserWithEmailAndPassword(email, password)
// here we get user id if creating is successful.
.then(function(user){
dispatch({type: USER_SIGNUP_SUCCESS}); // I dispatched some message.
db.ref(`users/${user.uid}`).set({name: username}); // I added user
console.log('uid:',user.uid)
})