繁体   English   中英

从 Firebase Firestore 中删除字段/键带有句点/标点符号 (".") 的字段 - 模块化 v9 JavaScript SDK

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

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

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

我添加了一个名为“example.com”的字段/键,其中包含一些任意值。 object 看起来像这样:

{
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”键。 我知道这试图从主数据库文档中的“示例”object 中删除“com”键,这不是我想要的,但我不明白如何修改此代码以将整个字符串视为键。

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

以及有关如何使其正常工作(删除带句点的字段)的提示,我们将不胜感激。

类似问题的链接:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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