[英]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.