如何删除 Firebase 中文档字段内的命名(非 id)索引数组对象?

问题描述 投票:0回答:1

我有一个包含如下字段的集合和文档:

enter image description here

我正在尝试删除“喜欢”数组字段中的单个项目,该字段是用命名索引准备的,而不是像 0,1,2 这样的数字索引。我浏览了论坛但找不到这个问题的答案。我尝试的是:

updateDoc(doc(db, "users", selectedUserId), {likes: arrayRemove(userId)})      // also with arrayRemove({userId})

但这会删除

likes
数组内的所有对象。怎么处理这个问题?

javascript firebase google-cloud-firestore
1个回答
0
投票

你根本没有数组。 Firestore 中的数组始终按数字而不是字符串进行索引,并且对象始终使用字符串键填充。因此,您有一个对象字段而不是数组字段。 因此,

arrayRemove
不会达到您的预期。

如果您想删除对象字段的子字段,您必须:

  1. 将文档读入内存。
  2. 根据需要修改对象字段。 在 JavaScript 中,它只是一个普通对象,您可以像任何其他 JS 对象一样进行修改。
  3. 将修改后的字段写回到文档中。
© www.soinside.com 2019 - 2024. All rights reserved.