Firebase检查用户的显示名称/用户名是否唯一

时间:2017-06-08 12:36:38

标签: firebase firebase-realtime-database

我想确保在尝试注册之前displayName是唯一的。我有一个这样的用户表:

$uid: {
  ..data..
  displayName: 'noob839',
}

我已经做了".indexOn": ["displayName"]来优化这一点,现在我需要(从客户端)检查每个用户,看看是否已经采用displayName值。

当前用户只能读取其他用户的该字段非常重要。

这是推荐的方法吗?我将如何迭代每个用户以查看显示名称是否唯一?提前谢谢。

P.S。由于我们无法将数据附加到用户,因此我们必须创建一个单独的用户对象,这会使应用程序设计变得复杂,因为它会为注册和数据检索添加另一个故障点(两步过程)。真是太遗憾了!

1 个答案:

答案 0 :(得分:1)

查询该名称,以便您不会遍历用户:

这是在Angular2,但可以转换为适当的语言(我已经拥有)

/*
    Available username
*/
public availUsername(displayName: string): Observable<any[]> {
    this.users = this.AF.database.list("users", {
        query: {
            orderByChild: 'displayName',
            equalTo: displayName
        }
    }).first();
    return this.users;
}

this.availUsername("theblindprophet").
   subscribe(response => {
       if(response.length == 0) {
           // No one has this displayName
       } else {
           // someone has it
       }
   });

如果没有结果(数组长度为0),则没有人拥有该名称。

假设您将用户存储在users下。