Javascript 对用户进行身份验证并同时将其添加到数据库中
我想注册新用户(通过auth),然后将他们(连同他们的姓名和其他信息)添加到实时数据库中的用户列表数据库中。我不知道我做错了什么。身份验证非常有效,但是新用户没有被添加到数据库中Javascript 对用户进行身份验证并同时将其添加到数据库中,javascript,authentication,firebase,Javascript,Authentication,Firebase,我想注册新用户(通过auth),然后将他们(连同他们的姓名和其他信息)添加到实时数据库中的用户列表数据库中。我不知道我做错了什么。身份验证非常有效,但是新用户没有被添加到数据库中 var fname = document.getElementById('fname').value; var lname = document.getElementById('lname').value; var email = document.getElementById('email')
var fname = document.getElementById('fname').value;
var lname = document.getElementById('lname').value;
var email = document.getElementById('email').value;
在下面的代码中,我注册他们,然后将他们的名字添加到DB中,然后发送验证电子邮件
function handleRegister() {
var ref = firebase.database().ref();
console.log(email);
console.log(fname);
if (email.length < 4) {
alert('Please enter an email address.');
return;
}
if (password.length < 4) {
alert('Please enter a password.');
return;
}
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
var uid = firebase.auth().currentUser.uid;
// [START_EXCLUDE]
if (errorCode == 'auth/weak-password') {
alert('The password is too weak.');
firebase.auth().onAuthStateChanged(user => {
if(user) {
var postData = {
Fullname: fname + lname,
email: email,
};
// Write the new post's data simultaneously in the posts list and the user's post list.
var updates = {};
updates['/Users/' + uid ] = postData;
return firebase.database().ref().update(updates);
}
})
} else {
console.log(error);
}
})
和句柄寄存器已更新为
firebase.auth().createUserWithEmailAndPassword(email, password).then(
addusertoDB).catch(handleCreateUserError);
它最终被添加到DB中(没有uid),但是firebase.getAuth().uid没有获得uid。我收到的错误是“firebase.getAuth不是函数”您试图在传递给
catch()
的同一函数中处理错误和用户更新。这意味着只有当firebase.auth().createUserWithEmailAndPassword(电子邮件,密码)
失败时,该函数中的任何代码才会运行
从firebase文档中:
createUserWithEmailAndPassword
createUserWithEmailAndPassword(电子邮件,密码)
返回
firebase.Promise
包含非空firebase.User
创建与指定电子邮件地址关联的新用户帐户
和密码
成功创建用户帐户后,此用户也将
已登录到您的应用程序
这意味着,成功创建用户后,您可以通过传入then()
的回调访问新用户
你可能想要这样的东西:
var doSomethingWithNewUser = function(user) {
// Manipulate the newly created User however you like here.
// You don't have to sign them in again.
};
var handleCreateUserError = function(error) {
var errorCode = error.code;
var errorMessage = error.message;
// Do whatever you want with the error codes.
};
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(doSomethingWithNewUser)
.catch(handleCreateUserError);
catch()
用于错误处理……您需要在then()
中执行此操作,而不是catch()
好的,我是否将catch替换为then?,很抱歉,我是firebase的新手。您能帮助发布正确的格式吗?我不清楚为什么您的代码在创建用户条目后会尝试更新它们--如果用户在您的系统中注册,那么它们应该已经存在于数据库中某个位置的用户表中。。。
var doSomethingWithNewUser = function(user) {
// Manipulate the newly created User however you like here.
// You don't have to sign them in again.
};
var handleCreateUserError = function(error) {
var errorCode = error.code;
var errorMessage = error.message;
// Do whatever you want with the error codes.
};
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(doSomethingWithNewUser)
.catch(handleCreateUserError);