我想确保在尝试注册之前displayName
是唯一的。我有一个这样的用户表:
$uid: {
..data..
displayName: 'noob839',
}
我已经做了".indexOn": ["displayName"]
来优化这一点,现在我需要(从客户端)检查每个用户,看看是否已经采用displayName
值。
当前用户只能读取其他用户的该字段非常重要。
这是推荐的方法吗?我将如何迭代每个用户以查看显示名称是否唯一?提前谢谢。
P.S。由于我们无法将数据附加到用户,因此我们必须创建一个单独的用户对象,这会使应用程序设计变得复杂,因为它会为注册和数据检索添加另一个故障点(两步过程)。真是太遗憾了!
答案 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
下。