如何将新数据添加到Firebase数据库中的现有数据?
问题描述:
我有一个用于注册用户的三个幻灯片的进度条。当第一个屏幕出现时,用户将输入主要信息并单击下一个,另一个表单滑到第三个。我将一个函数附加到第一个下一个按钮,以在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);
}
任何帮助将不胜感激
答
在您的案例行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);
感谢您的回复。我不断收到这个错误“BusinessSummary没有定义”,这对logoUrl和BackgroundUrl也是一样的错误。 – Ola
哎呀,我忘了引号。检查编辑的版本。 – Yevgen
非常感谢。我添加了次要的东西给它更新['/ Businesses /'+ uid +'/'+'BusinessSummary'] = BussSummry; – Ola