我有一个小用户登录表单,新用户必须添加他的用户名,密码和昵称(因为基本的firebase auth只接受电子邮件作为用户名,对吧?)。
密钥基于用户名,它有2个子项:昵称和用户名。
在尝试使用Firebase中的auth方法创建用户之前,我查询以检查昵称是否已存在。如果是,它不会创建用户并抛出警报。如果昵称不存在,则会创建用户,然后将昵称从上图中添加到用户结构中。
有时候在这里和那里思考和更改代码(代码跳过' observeSingleEventOfType'并执行createUser,然后检查昵称是否已经存在),我认为一个好主意是获得createUser代码并将其直接添加到昵称查询中的observeSingleEventOfType中,作为' else' for' if snapshot.exists()' ...
它似乎正在运作,但我不知道它是否是正确的'执行它的方式......
还有另一种方式(更好的方法)吗?
方法如下。 谢谢!
WITH T1 AS
(SELECT Title, MIN(Last_update_date) First_Update
FROM table
GROUP BY Title)
SELECT table.*
FROM table
INNER JOIN T1
ON T1.First_Update = table.Last_update_date
AND T1.Title = table.Title
答案 0 :(得分:3)
在构建我的上一个Firebase应用时,我遇到了同样的问题。我用来解决它的方法是创建从用户名到用户ID的附加映射。所以我的结构看起来像那样(uid是来自Firebase auth的用户ID):
users: {
accounts: {
uid1: {
username: frank,
...
},
uid2: {
username: monique,
...
}
...
},
username_to_uid: {
frank: uid1,
monique: uid2,
...
}
}
这允许两件大事:
答案 1 :(得分:0)
我对Firebase事件观察员的同步问题提出了疑问:
昨天,我认为它正常工作,我在调用segue打开另一个viewController时遇到了问题(它正在调用新视图,而Observer仍在运行时没有结果,应用程序崩溃,因为委托方法正在使用wasn&# 39;在另一种观点上宣布)......
作为解决方案,我摆脱了所有代理并使用完成处理程序重新编码方法......现在它真的很好!
哦,和@pkacprzak:我做了修改并开始使用这种桥接结构'存储昵称和uid之间的关系。男人,现在踢它!非常感谢你!