我需要在我的 Firebase 实时数据库上设置一个值。
这是我的数据库组织:
Users:
U20180422:
ID: U20180422
Name: "Jason"
Surname: "Smith"
Address: "4198 Norma Avenue"
Age: "30"
creation date: "04/22/2018"
U20180311: ...
U20180304: ...
U20180215: ...
...
我编写了这个代码片段,它可以工作:
<script language="javascript">
//this retrieves from the form of registration the ID of the user
var userId = document.getElementById("searchfield").value;
// Initialize Firebase
var config = {
//my configurations
};
firebase.initializeApp(config);
console.log(firebase);
var database = firebase.database();
var ref = database.ref('Users/' + userId);
var data = {
Account_validated = "OK"
}
ref.set(data)
</script>
但通过这种方式,存在的数据将被删除,并且路径中仅存在 account_validated 状态。所以我想我必须首先检索已经拥有的所有数据,然后将它们与新数据一起发送到数据库。
这在我的代码中不起作用:
//Retrieve from database
ref.on('value', gotData, errData);
function gotData(data) {
var value = data.val();
var getvalue = Object.value(value);
for (var i=0; i < value.lenght; i++) {
var k = value[i];
var name= value[k].Name;
var surname= value[k].Surname;
var address= value[k].Address;
var age= value[k].Age;
var creation_account_date= value[k].creation date;
console.log(name, surname, address, age, creation date);
}
}
function errData(err) {
console.log('Error!');
console.log(err);
}
{
snapshot.forEach(function(child) {
var childData = child.val();
var name=child.val().Name;
var surname=child.val().Surname;
var address=child.val().Address;
var age=child.val().Age;
var creation_account_date=child.val().creation date
});
});
//Write
var data = {
ID: userId,
Name: name,
Surname: surname,
Address: address,
Age: age,
creation date: creation_account_date
}
ref.set(data)
最佳答案
要仅更新您在数据中指定的键,请使用update
:
var data = {
Account_validated: "OK"
}
ref.update(data)
这将仅更新 ref
下的 Account_validated
键,并保持其他子属性不变。
关于javascript - 如何在不删除其他内容的情况下更新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52931313/