0
我有一個火力地堡的數據庫結構是這樣的:更新火力地堡與動態性能
-KrVtLbX7w8LKHC888cx
siteInfo
description: "Udemy is an online learning and teaching market..."
siteName: "Udemy"
title: "Udemy Online Courses - Learn Anything, On Your ..."
type: "video_lecture"
url: "https://www.udemy.com/"
每個siteInfo
節點可能包含不同的密鑰(即一個可能沒有type
,另一個可以有一個img
。 )。這使數據鍵相對動態,所以我不能在firebase.update
中明確地設置它們。
在前端,我有一個表單讓用戶編輯網站信息。該表單顯示用戶要編輯的各個輸入字段中的數據,具體取決於用戶選擇哪個站點,這非常有效。
我的問題是提交更新到用戶更新的數據節點。
現在我設置狀態爲有這樣的變化,輸入:
handleChange = ({target}) => {
this.setState({
[target.name]: target.value
});
}
和更新這樣的節點:
firebase.database().ref().child(`paths/${this.props.uid}/${key}`);
let siteInfo = this.state;
firebaseRef.update({
siteInfo
});
這是什麼東西做的是刪除整個siteInfo
節點並僅添加用戶已編輯的字段。因此,與其讓這僅說明已更新:
-KrVtLbX7w8LKHC888cx
siteInfo
description: "The updated description!"
siteName: "Udemy"
title: "Udemy Online Courses - Learn Anything, On Your ..."
type: "video_lecture"
url: "https://www.udemy.com/"
我得到這個在那裏的更新由用戶所做的編輯,但一切被刪除:
-KrVtLbX7w8LKHC888cx
siteInfo
description: "The updated description!"
siteName: "The updated site name!"
我想它只更新那些已經更新的密鑰。這是我對Firebase的.update
方法應該如何工作的理解,但由於某些原因,它只是覆蓋這裏的所有內容。