我正在尝试创建一个注册页面,该页面包含一个基于Firebase的网站的两页流程。第一个HTML页面接收用户信息(姓名,电子邮件等),第二个HTML页面让他们设置更多数据。在获取为第一页设置的唯一用户ID,将其转移到第二页并允许用户使用更多数据更新其节点时,我遇到了问题。
所以我要使用两个单独的js文件,第一个用于注册页面1的文件是:
var usersRef = firebase.database().ref().child('PickUp').child('Users').push();
document.getElementById('mySubmit').addEventListener('click', submitForm);
function submitForm(e){
e.preventDefault();
var name = getInputVal('name');
var pass = getInputVal('password');
var email = getInputVal('emailfield2');
var address = getInputVal('addressfield');
var gender = getInputVal('gender');
createUser( name, pass, email, address, gender);
}
function getInputVal(id){
return document.getElementById(id).value;
}
function createUser(fullName, password, email, gender) {
usersRef.set({
fullname: fullName,
password: password,
email: email,
gender: gender,
karma: "5000",
})
第二个是:
var usersRef = firebase.database().ref().child('PickUp').child('Users');
document.getElementById('mySubmit2').addEventListener('click', submitForm);
function submitForm(e){
e.preventDefault();
var base = getInputVal('base');
var basket = getInputVal('basket');
var soccer = getInputVal('soccer');
var tennis = getInputVal('tennis');
var volley = getInputVal('volley');
updateUser(base, basket, soccer, tennis, volley);
}
function updateUser(base, basket, soccer, tennis, volley) {
usersRef.update({
baseball: base,
basketball: basket,
tennis: tennis,
soccer: soccer,
volleyball: volley
});
我只是试图将来自两个不同html页面,来自两个不同文件的这两个节点连接起来,并使其成为其中包含所有信息的1个节点。
我似乎找不到任何参考资料或解决此问题的方法,但是如果有,请发送过来。任何帮助总是很感激。
谢谢
答案 0 :(得分:0)
这可能是一个计时问题。您的第二个脚本可能会为Firebase太快地调用userRef
请求。您可以尝试执行以下操作:
TL; DR-延迟Firebase用户查询
var usersRef;
document.getElementById('mySubmit2').addEventListener('click', submitForm);
function submitForm(e){
e.preventDefault();
var base = getInputVal('base');
var basket = getInputVal('basket');
var soccer = getInputVal('soccer');
var tennis = getInputVal('tennis');
var volley = getInputVal('volley');
userRef = firebase.database().ref().child('PickUp').child('Users');
updateUser(base, basket, soccer, tennis, volley);
}
function updateUser(base, basket, soccer, tennis, volley) {
usersRef.update({
baseball: base,
basketball: basket,
tennis: tennis,
soccer: soccer,
volleyball: volley
});
答案 1 :(得分:0)
客户端SDK中包含的.onAuthStateChanged()
方法-在您的情况下,记录在here中的JavaScript SDK是如何执行此操作。 firebase.auth().currentUser.uid
将使用该信息填充。