从 Firebase Firestore 中删除一个字段,其中 field/key 有一个 period/punctuation (".") - modular v9 JavaScript SDK

Delete a field from Firebase Firestore where the field/key has a period/punctuation (".") - modular v9 JavaScript SDK

如果重要的话,这个问题是针对 React Native Expo 移动应用程序的。

我有一个平面数据库对象。以文档为例:

我添加了一个名为“example.com”的 field/key,具有一些任意值。 对象看起来像这样:

{
capital: "words",
location: "other words",
"example.com": "more words"
}

我想从数据库中删除密钥“example.com”,我使用的代码与文档中示例中的代码几乎相同。

const cityRef = doc(db, "cities", "BJ");
const payload = {
    "example.com": deleteField(),
};
await updateDoc(cityRef, payload);

这不会删除“example.com”键。我知道这试图从主数据库文档中的“example”对象中删除“com”键,这不是我想要的,但我不明白如何修改这段代码以将整个字符串视为一个键。

我在 SO(底部的链接)上查看了一些类似的问题,得出的结论是他们必须使用 FieldPath,但是语法已经过时,并且不再适用于当前Firestore 版本(或者至少我找不到我正在使用的版本的 FieldPath 文档,上面已链接)。

以及有关如何使其正常工作(删除带句点的字段)的提示。

Link 类似问题:

您仍然需要使用 FieldPath,但是 API 在新的 v9 模块 SDK 中有所不同。可以看到FieldPath in the API docs。只需将它与您从 Firestore SDK 使用的任何其他功能一起导入即可。

我自己没用过,但根据链接文档,我猜它是这样工作的:

import { updateDoc, deleteField, FieldPath } from "firebase/firestore";
...
updateDoc(cityRef, new FieldPath("example.com"), deleteField());