【发布时间】:2021-11-13 02:39:40
【问题描述】:
我目前正在尝试让用户在我的颤振应用程序中输入用户名。我目前在 firebase 上有这些规则,只允许添加唯一的用户名。 我的问题是当我尝试通过在按下按钮时调用下面的方法将用户名添加到数据库时,我无法获取错误。 我正在使用 Firebase 实时数据库。 这是我添加用户名的代码:
Future<User?> addUsernameToDatabase(String? username) async {
final user = FirebaseAuth.instance.currentUser;
if(user != null)
{
//GuestUser
if(user.isAnonymous)
{
print("Guest user");
final uid = user.uid;
user.updateDisplayName(username);
await _dbRef.child('usernames').child(user.displayName!).set(uid);
}else{
final uid = user.uid;
setLoading(true);
try{
user.updateDisplayName(username);
await _dbRef.child('usernames').child(username!).set(uid);
setLoading(false);
} on PlatformException catch (error){
print(error.toString());
setLoading(false);
} on DatabaseError catch (error){
print(error.toString());
setLoading(false);
} on Exception catch (error){
print(error.toString());
setLoading(false);
}
}
}
}
这是关于 firebase 的规则。顺便说一句,如果用户输入用户名并且已经退出,它们将不会添加它。
{
"rules": {
".read": true,
".write": true,
"users":{
"$uid": {
".write": "auth !== null && auth.uid === $uid",
".read": "auth !== null && auth.provider === 'password'",
"username": {
".validate": "
!root.child('usernames').child(newData.val()).exists() ||
root.child('usernames').child(newData.val()).val() == $uid"
}
}
}
}
}
firebase 实时数据库中的数据也是这样的 https://i.stack.imgur.com/5gKuZ.png
【问题讨论】:
标签: firebase flutter dart firebase-realtime-database error-handling