繁体   English   中英

我可以修改本地 javascript 对象吗?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM