2017-04-27 104 views
1

我有一个用于注册用户的三个幻灯片的进度条。当第一个屏幕出现时,用户将输入主要信息并单击下一个,另一个表单滑到第三个。我将一个函数附加到第一个下一个按钮,以在Firebase数据库中创建新用户,并为每个下一个按钮添加一个函数,以将用户的输入保存到创建的uid下的Firebase DB中。我需要按照Firebase Doc的说明操作。但是,注意到第一个按钮之后的每个下一个按钮都按预期方式保存,但是它会用新输入的输入替换uid下的所有内容。我需要它将新信息添加到数据库中的现有信息,而不是将其替换。 我使用这个参考https://firebase.google.com/docs/database/admin/save-data 我知道推,setValue和更新之间的区别,我正在使用更新,但它取代了以前输入的所有内容。我在做什么错了,我怎样才能将它添加到现有的条目?这里是我的功能如何将新数据添加到Firebase数据库中的现有数据?

此功能附接在第一下一步按钮(创建用户,将获得UID)

  function registerBussiness() { 
        var database = firebase.database(); 
        var fname = document.getElementById('fname').value; 
        var lname = document.getElementById('lname').value; 
        var businessname = document.getElementById('Busname').value; 
        var email = document.getElementById('email').value; 
        var password = document.getElementById('password').value; 
        var website = document.getElementById('website').value; 
        //Get Elements 

        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) .then(function(user) { 
         var uid = firebase.auth().currentUser.uid; 
         var auth = firebase.auth(); 
         var storageRef = firebase.storage().ref(); 

         var postData = { 
         fname: fname, 
         lname: lname, 
         BusinessName: businessname, 
         email: email, 
         website: website, 
         }; 
         var updates = {}; 

         updates['/Businesses/' + uid] = postData; 

         return firebase.database().ref().update(updates); 
        }) 

       } 

这是代替先前由所述第一函数中输入的所有数据的第二功能

 function addBussSumrytoDB() { 


        var BussSummry = document.getElementById('AboutUs').value; 
        var root = firebase.database().ref(); 
        var uid = firebase.auth().currentUser.uid 


         var postData = { 
         BusinessSummary: BussSummry, 
         logoUrl: logoUrl.value, 
         BackgroundUrl: backgrdUrl.value, 
        }; 
        var updates = {}; 
        updates['/Businesses/' + uid] = postData; 

         return firebase.database().ref().update(updates); 
       } 

任何帮助将不胜感激

回答

1

在您的案例行updates['/Businesses/' + uid] = postData;调用firebase覆盖所有在下的所有内容带有新数据的3210路径。你只需要指定那些你真正想要更新信息的孩子。示例如下:

var updates = {}; 
updates['/Businesses/' + uid + '/' +'/BusinessSummary'] = BussSummry; 
updates['/Businesses/' + uid + '/' +'/logoUrl'] = logoUrl.value; 
updates['/Businesses/' + uid + '/' +'/BackgroundUrl'] = backgrdUrl.value; 
firebase.database().ref().update(updates); 
+0

感谢您的回复。我不断收到这个错误“BusinessSummary没有定义”,这对logoUrl和BackgroundUrl也是一样的错误。 – Ola

+0

哎呀,我忘了引号。检查编辑的版本。 – Yevgen

+0

非常感谢。我添加了次要的东西给它更新['/ Businesses /'+ uid +'/'+'BusinessSummary'] = BussSummry; – Ola

相关问题