[英]Can I modify a local javascript object?
我有一個從 firebase 數據庫返回的 stats 對象
var stats = await firebase
.database()
.ref("statistics")
.child(currentUser.uid)
.once("value");
對象的格式如下:
stats Object {
"all": Object {
"pending": 1,
"settled": 0,
"vol": 100,
},
"mtd": Object {
"pending": 1,
"settled": 0,
"vol": 100,
},
"qtd": Object {
"pending": 1,
"settled": 0,
"vol": 100,
},
"today": Object {
"date": "Dec 7, 2019",
"pending": 1,
"settled": 0,
"vol": 100,
},
"yesterday": Object {
"date": "Dec 6, 2019",
"pending": 0,
"settled": 0,
"vol": 0,
},
"ytd": Object {
"pending": 1,
"settled": 0,
"vol": 100,
},
}
我可以直接覆蓋 stats.val().yesterday,比如說將 stats.val().yesterday 設置為
"date": "Dec 6, 2020",
"pending": 1,
"settled": 10,
"vol": 1000,
}
然后使用 stats.val() 進行最新更改? 根據我所做的,在對yesterday
字段進行更改之前,我仍然看到舊數據。 在這種情況下,如何獲得 stats.val() 的變化? 謝謝!
val()
返回快照中數據的副本,而不是實際的底層對象。 如果您修改此副本,它不會更改存儲在快照中的內容。 通過這種方式,DataSnapshot 被稱為“不可變的”——它不能被改變。 所以,你想要做的事情是不可能的。
通常,應用程序代碼應該只調用一次val()
來獲取數據的副本,然后使用該副本來填充 UI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.