繁体   English   中英

如何将新数据添加到Firebase数据库中的现有数据?

[英]How can I add new data to existing data in a firebase database?

我有一个带有三个幻灯片的进度条,用于注册用户。 当第一个屏幕出现时,用户将输入主要信息,然后单击“下一步”,另一个表格将滑动直到第三个屏幕。 我在第一个next按钮上附加了一个函数,以便在firebase数据库中创建新用户,并且在每个next按钮上附加了一个函数,以将用户的输入保存到创建的uid下的firebase DB中。 我要按照firebase doc的说明进行操作。 但是,请注意,第一个按钮之后的每个下一个按钮均按预期保存数据,但是它将uid下的所有内容替换为新输入的输入。 我需要它来将新信息添加到数据库中的现有信息,而不是替换它。 我使用此参考https://firebase.google.com/docs/database/admin/save-data我知道push,setValue和update之间的区别,并且我使用的是update,但它取代了之前输入的所有内容。 我在做什么错,如何获得将新数据添加到现有条目的信息? 这是我的职能

该函数附加了第一个Next按钮(创建用户并获取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); 
                }

任何帮助将不胜感激

在您的情况下,行updates['/Businesses/' + uid] = postData; 调用firebase来用新数据覆盖'/Businesses/' + uid路径下'/Businesses/' + uid所有内容。 您只需要指定路径,这些路径实际上就是您要在其上更新信息的子级。 下面的例子:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM