Firestore 在完全定义的 JSON 中发现未定义的值,键甚至不存在

Firestore finds undefined value in fully defined JSON, key does not even exist

我正在尝试将 JSON 对象上传到 Google Firestore。

将对象设置为 Firestore 文档时,我的代码抛出以下错误:

Error: Value for argument "data" is not a valid Firestore document. 
Cannot use "undefined" as a Firestore value 
(found in field audit.`20`.requests.`0`.lrEndTimeDeltaMs).

现在我做的第一件事是在上传之前记录对象以检查未定义的值:

console.log(JSON.stringify(resultsToUpload));

return database
  .collection("foo1")
  .doc("bar1")
  .set(resultsToUpload);

不仅对象中定义了所有值,而且提到的字段 audit.`20`.requests.`0`.lrEndTimeDeltaMs 甚至不存在:

resultsToUpload = {  
  "audit":{   
    "20":{  
      "ronaldScore":3,
      "id":"network-requests",
      "requests":[  
        {  
          "url":"https://www.example.com/",
          "startTime":0,
          "endTime":62.16699999640696,
          "transferSize":15794,
          "resourceSize":78243,
          "statusCode":200,
          "mimeType":"text/html",
          "resourceType":"Document"
        }
      ]
    }
  }
}

数据来自 Google Lighthouse 审计。

计算字符串化 JSON 对象的 UTF-8 字符串长度得出大小为 30 MB。

1)所有的值都定义了(有些为null,应该没有问题)。

2) JSON.

中甚至不存在上述字段

我的问题是:这怎么会发生?一个字段怎么会出现呢? 另外:我该如何解决这个问题?

在 Javascript-Object 上使用 JSON.stringify 隐藏所有 "undefined" 值(以及它们的键),然后将剩下的字符串化。

那是因为JSON没有"undefined"这样的东西。

因此日志显示了完全定义的 JSON,即使实际 JS-Object 确实包含 "undefined" 值。