【问题标题】:How can I add new data to existing data in a firebase database?如何将新数据添加到 Firebase 数据库中的现有数据?
【发布时间】:2017-04-28 02:46:00
【问题描述】:

我有一个带有三张幻灯片的进度条,用于注册用户。当第一个屏幕出现时,用户将输入主要信息并单击下一步,另一个表单会滑动直到第三个。我将一个函数附加到第一个下一个按钮以在 firebase 数据库中创建新用户,并将一个函数附加到每个下一个按钮以将用户的输入保存到创建的 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); 
                }

非常感谢任何帮助

【问题讨论】:

    标签: javascript firebase firebase-realtime-database


    【解决方案1】:

    在您的情况下,updates['/Businesses/' + uid] = postData; 行调用 firebase 以用新数据覆盖 '/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);
    

    【讨论】:

    • 感谢您的回复。我不断收到此错误“BusinessSummary 未定义”,对于 logoUrl 和 BackgroundUrl 也是同样的错误。
    • 糟糕,我忘记了引号。检查编辑版本。
    • 非常感谢。我添加了一些小东西更新['/Businesses/' + uid +'/' + 'BusinessSummary'] = BussSummry;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多