簡體   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