首页 > 解决方案 > 安全规则:在一个文档中存储唯一的用户名

问题描述

在我的应用程序上,我试图让用户必须拥有一个唯一的用户名。

我目前的方法是拥有一个Social包含一个名为Usernames. 该文档将用户存储userID为字段的键,然后将用户存储username为值。

我正在努力为此编写正确的安全规则。我希望这样:

目前,我无法开始工作的唯一一点是检查用户名是否已被使用。

我想到的另一个解决方案是反转字段(用户名:userID)。但我也想不出如何为这种方法编写安全规则。

当前规则

// Usernames

match /Social/Usernames {
    allow get: if request.auth.uid != null;
    allow update: if isUserNameAvailable();
}

// Functions

function isUserNameAvailable() {
    // This line works
    return (request.writeFields.hasOnly([request.auth.uid]))

    // This one doesn't
        && !(resource.data.values().hasAny([request.writeFields[request.auth.uid]]));
}

Firestore 数据结构

在此处输入图像描述

非常感谢任何帮助,非常感谢!

标签: firebasegoogle-cloud-firestorefirebase-security

解决方案


推荐阅读