Firebase在页面之间传输数据

时间:2018-11-24 21:46:30

标签: javascript firebase firebase-realtime-database

我正在尝试创建一个注册页面,该页面包含一个基于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个节点。

我似乎找不到任何参考资料或解决此问题的方法,但是如果有,请发送过来。任何帮助总是很感激。

谢谢

2 个答案:

答案 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将使用该信息填充。