从 Firestore 数组中按键/值删除项目

2024-05-03

我在 Firestore 中有一个数组,其结构如下:

palettes
    0: {date: 2019-05-01, name: "First Palette", palette: [array]}
    1: {date: 2019-05-02, name: "Palette 2", palette: [array]

中的每一项palettesarray 是一个调色板项目,其中包含日期、名称和调色板数据。

在我的 React 应用程序中,我尝试通过引用 Firestore 数据库中的特定调色板来删除它name价值并且没有任何运气。

例如,如果我有paletteName从点击事件传入的“Palette 2”,如何删除以该字符串作为名称值的调色板?

这是我尝试过的:

1.

const deletePalette = paletteName => {
    db.collection('users').doc(user.uid)
    .update({
         palettes: firebase.firestore.FieldValue.arrayRemove({
             name: paletteName
         })
    })
    // ...
}

2.

const deletePalette = paletteName => {
    db.collection('users').doc(user.uid)
        .update({
            palettes: firebase.firestore.FieldValue.arrayRemove(paletteName)
        })
    // ...
}

3.

const deletePalette = paletteName => {
    const ref = db.collection('users').doc(`${user.uid}/palettes/`)

    ref.update({
        [paletteName]: firebase.firestore.FieldValue.delete()
    })
    // ...
}

4.

const deletePalette = paletteName => {
    db.collection('users').doc(user.uid)
    .update({
        palettes: palettes.filter(
            palette => palette.name !== paletteName
        )
    })
    // ...
}

这些都没有这样做。我在这里缺少什么?


您将无法使用FieldValue.arrayRemove。这只适用于作为数组的顶级字段。您也无法通过一次操作来完成此操作。

你不得不

1)将整个文档读入内存,
2)按照你想要的方式修改内存中的数组,
3)然后将该字段更新回文档。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Firestore 数组中按键/值删除项目 的相关文章

随机推荐

  • 如何在不更改内容字体的情况下更改TabItem的标题字体?

    如何更改 TabItem 标题中的字体而不更改内容的字体 当我设置FontSize财产在TabItem它还改变了 FontSizeTextBlocks
  • 查询计算不同值的数量?

    我在 MS Access 2003 中有一个表 如下所示 url id example com red example com blue example com blue other com red other com orange mor
  • HTML/PHP if-else 语句

    我正在使用 Bootstrap 创建一个网站 我想输入 if else 语句 但我不知道该怎么做 让我解释 Here is an image of my current HTML snippet 现在我想要的是 如果我通过 An Aussc
  • 如何应对本地化?我应该遵循一个标准吗?

    我正在尝试创建一组类来处理本地化 主要是货币部分 但也包括语言 我可以想象其中的逻辑 但我不知道不同的语言和货币使用什么名称 我看到有很多 ISO 标准 我应该选择哪一个 不管怎样 这是我想到的逻辑 以防你也能帮忙解决这个问题 我会有一个
  • NSMutableArrays

    我有一个NSMutableArray作为类的成员变量 In the h file interface bleh NSMutableArray list property readonly assign NSMutableArray list
  • 在 scala 中,如何将 future 列表转换为返回第一个成功 future 的 future? [复制]

    这个问题在这里已经有答案了 所有的未来最终都可能会成功 有些可能会失败 但我们希望第一个成功 并希望将这个结果代表为未来 如果列表中的所有 future 都失败 这个 future 就会失败 如图所示文档 https www scala l
  • getFromLocationName 错误,服务不可用。一直在工作,停止了

    在我的应用程序中 我使用 getFromLocationName 直到最近它一直在应用程序中工作 现在突然我得到的是 服务不可用 异常显示 Geocoder getFromLocationName Geocoder java 178 这是我
  • 括号平衡器程序

    我通过堆栈制作了一个括号检查程序 其中它将以字符串作为输入 并检查字符串或表达式是否具有相等的编号 左大括号和右大括号 如果是 它将打印 括号平衡 否则 括号不平衡 但另一个很奇怪 它只是打印一些随机值 并且不将表达式作为输入 只是自己打印
  • ObserveOn 和 Scheduler.NewThread 不会观察到,如果观察者的 OnNext 被阻塞并继续

    有人可以帮助解释为什么当我 阻止并继续 观察者的 onNext 序列订阅具有时间可观察序列的缓冲区时 Scheduler NewThread 不再适用吗 例如 如果我通过缓冲一系列数字 var query from number in En
  • R chron times() 函数不起作用

    我正在尝试将时间转换为自午夜以来的秒数 我很难从 chron 包中获取 times 函数来工作 我的使用方法如下 gt library chron gt 24 24 60 times 50 Error in 24 24 60 times 5
  • YOUTUBE API:检索视频关键字

    最近 YouTube 决定仅向经过身份验证的开发者输出视频关键字 我注册了开发者密钥 我试图获取一个我将解析的 XML 通过请求 https gdata youtube com feeds api videos COwIYbYQUrQ ke
  • 防止 XAML/C# 中 ListView 的 Return(Enter)、向上和向下箭头键的默认行为 (Windows 10)

    当列表视图具有焦点时 按 Enter 键的默认行为是选择列表视图的第一个元素 向上和向下箭头键滚动列表视图 我试图阻止这种默认行为并连接我的自定义逻辑 我可以使用 KeyDown 为列表视图实现访问键 如下所示 代码隐藏方法 CoreWin
  • 您无权执行该操作

    我有一个时间触发的脚本 可以定期从外部源检索内容并用它更新 Google 网站页面 根据this https developers google com apps script guides triggers installable res
  • 应用程序在后台时远程推送通知 swift 3

    我有一个可以接收远程推送通知的应用程序 我已经实施了didReceiveRemoteNotification这样 func application application UIApplication didReceiveRemoteNoti
  • 包括 Oracle 中的等效项

    在 SQL Server 中你可以这样写 create index indx on T1 A B INCLUDE C D E 有没有办法在 Oracle 中做同样的事情 Refs http msdn microsoft com en us
  • 建议一种每分钟更新时间的方法

    我有一个完整的ajax应用程序 我正在使用下面的代码每分钟更新一次时间 但如果我保持浏览器打开超过 10 分钟 浏览器就会变得无响应 缓慢 建议更好的代码 function tick var d new Date var time padN
  • 如果数据表的主键是两列,您可以使用 DataTable.Contains(object key) 吗?

    如果是这样怎么办 要按主键选择 您应该使用以下之一 DataTable Rows Find Object 如果你的 PK 是一列 DataTable Rows Find Object 如果您有超过 1 列作为主键 对于类型化 DataSet
  • 键值观察和 NSButton 状态

    我试图观察复选框状态 并在复选框状态更改时在应用程序中进行适当的更改 在使用复选框管理窗口的窗口管理器中 我有以下观察者设置 void awakeFromNib myCheckBox addObserver self forKeyPath
  • 如何重定向 Groovy 脚本的输出?

    我想知道是否有任何方法可以更改我从 Java 代码执行的 groovy 脚本的默认输出 System out 这是Java代码 public void exec File file OutputStream output throws Ex
  • 从 Firestore 数组中按键/值删除项目

    我在 Firestore 中有一个数组 其结构如下 palettes 0 date 2019 05 01 name First Palette palette array 1 date 2019 05 02 name Palette 2 p