firebase - 由于我的应用程序使用密码身份验证,因此上面的代码将在该字段中给我 null
问题描述
void _addMessage(String value) async {
final user = FirebaseAuth.instance.currentUser;
if (user != null) {
await FirebaseFirestore.instance.collection("interest_chat").add({
'author': user.displayName ?? "Anonymous",
'author_id': user.uid,
'timestamp': Timestamp.now().millisecondsSinceEpoch,
'value': value,
});
}
}
由于我的应用程序使用密码身份验证,因此上面的代码将在“作者”字段中给我 null。但是我想显示存储在另一个firebase集合中的用户名,它位于FirebaseFirestore.instance.collection("users").doc(user!.uid)
我对flutter和firebase非常陌生的位置,这是我为学校项目制作的第一个应用程序,任何帮助或指导都会被赏识。
解决方案
您的问题可能会更好,但根据我的理解,似乎新用户没有displayName
与该user
对象关联,因为您使用的是 email_id + 密码注册选项,并且您希望检索存储在另一个集合中的用户名在“用户”下的firestore。
Future<String> _getUsername() async {
final user = FirebaseAuth.instance.currentUser;
final docSnap =
await FirebaseFirestore.instance.collection("users").doc(user!.uid).get();
return docSnap.get(
'userName'); //assuming the field within the document is titled ‘userName’
}
void _addMessage(String value) async {
final user = FirebaseAuth.instance.currentUser;
if (user != null) {
final userName = await _getUsername();
await FirebaseFirestore.instance.collection("interest_chat").add({
'author': userName,
'author_id': user.uid,
'timestamp': Timestamp.now().millisecondsSinceEpoch,
'value': value,
});
}
}
推荐阅读
- leaflet - CartoDB 如何在 PNG 图像 Tiles 上添加鼠标交互
- oracle - 尝试创建 proc 但出现错误
- spring-boot - 我正在尝试将带有预签名 URL 的图像上传到 Google Cloud Storage,但对象元数据已写入对象
- matplotlib - 无法解释 matplotlib 绘图
- ionic-framework - 离子 + Android 9 + 文件传输
- r - R Github 热图颜色修改
- java - 在 Java 中使用 GUI jButton 更新 JDBC 会导致 java.lang.NullPointerException
- c# - 我没有在 Y 坐标图上绘制正确数据的错误在哪里
- python - 使 Python 脚本可执行并添加包 (Windows)
- reactjs - Adding items to commandbar fabricui