[英]How to remove field from array in Firestore?
我想从 Firestore 的数组中删除一个特定的字段(它是用户 ID)。
我尝试:
override fun unlikePost(postId: String) {
FirebaseFirestore.getInstance().collection(postCollection)
.document(postId).update("likeList", FieldValue.arrayRemove(FirebaseAuth.getInstance().uid))
}
但是当我这样做时,我在 Firestore 中的likeLIst 更改为:
[]
为什么likePost不删除特定字段而是清除整个数组并更改为[]?
如何从 Firestore 中的数组中删除字段?
致电:
.update("likeList", FieldValue.arrayRemove(FirebaseAuth.getInstance().uid))
确实如此。 这意味着您要从“likeList”数组中删除经过身份验证的用户的 UID。 但是,这并不意味着您要从文档中完全删除数组,因此是该表示。 两个刹车[]
代表一个空数组。
那么如何从文档中删除整个数组呢? 您可能认为传递 null 值可能会成功,但它不会,因为 null 是 Firestore 中支持的数据类型。 所以调用:
.update("likeList", null)
它将导致:
Firestore-root
|
--- posts (collection)
|
--- postId (document)
|
--- likeList: null (array)
如果您想完全从文档中删除数组,您应该调用:
.update("likeList", FieldValue.delete())
这样,无论数组中存在多少个 UID,您的数组都会从文档中删除。
编辑:
根据您的最后评论:
例如数组中有 5 个 UID。 我只想删除一个特定的。 现在,当我尝试这样做时,我会清除整个数组。
假设您有一个包含两个 UID 的数组,一个是“abc”,第二个是“xyz”。 最后一个是经过身份验证的用户的 UID。 如果你想删除“abc”,你应该调用:
.update("likeList", FieldValue.arrayRemove("abc"))
如果要删除第二个,则应使用:
.update("likeList", FieldValue.arrayRemove("xyz"))
或者:
.update("likeList", FieldValue.arrayRemove(FirebaseAuth.getInstance().uid))
因为FirebaseAuth.getInstance().uid
返回“xyz”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.