在Firebase Firestore中实施唯一的userIds

时间:2017-11-15 03:12:43

标签: firebase google-cloud-firestore

我正在玩Firebase的新Firestore数据库,并想知道是否有更有效的方法来强制执行唯一的用户名(或唯一的子节点)。

我使用电子邮件/密码验证,但允许用户创建一个独特的句柄,如Twitter。

使用Realtime数据库,我可以通过事务和多节点结构实现这一目标。

-users
    -uid1234:
        -username: ryan

-usernames:
    -ryan: uid1234

我认为可以在没有额外usernames节点的情况下使用文档作为Firestore中的用户名来执行此操作。

1 个答案:

答案 0 :(得分:0)

您可能可以用两种方法来做到这一点。创建用户之前,请先与另一个呼叫联系,以确认该用户是否存在于具有用户名的集合中。

您还可以创建类似以下规则:

match /users/{document=**} {
    allow create: if !exists(/databases/$(database)/documents/usernames/$(request.resource.data.username));
}

在这种情况下,如果用户名在创建时已经存在并且您可以捕获代码,则会返回一个错误。