这个 firebase 安全规则是多余的吗?

Is this firebase security rule redundant?

我有一个 collection 的 users,我有一个单独的 collection 的 usernames。在我的 collection usernames 中,我将不同的用户名存储为 doc_ids。也就是说,在 collection usernames 下,我可以将 doc_ids 作为 firstsecondthird 等。在每个 doc_id 下,我存储以下信息:

{
  ownerId: id,
  dateUpdated: someDate
}  

当我更改某些用户的用户名时,我执行批量查询,首先删除 oldUsername 文档,然后插入具有适当字段的 newUsername 文档。我的问题是关于与 usernames collection 相关的安全规则之一。我是否需要检查我是否已经拥有这样的用户名(即 doc_id)。我是否需要以下规则:

match /usernames/{username} {
  allow create: if !exists(/databases/$(database)/documents/usernames/$(username))
}

我认为这条规则是多余的,因为我强制执行 collection id 的唯一性,但我已经在其他几个帖子上看到了,所以我想看看其他人的意见。

是的,该规则没有任何作用,因为 create 仅在文档​​尚不存在时才会触发。如果文档已经存在,它的 .update 将被触发。

这种类型的检查在 .write 中很常见,但在您使用更精细的 .create 时不需要。