我try 将集合中的用户作为文档存储在FiRestore中,并希望使每个用户ID与文档ID相同. 我try 了,但它仍然为我提供了该用户的另一个ID:

Future<void> userSetupDone() async {
CollectionReference users = FirebaseFirestore.instance.collection('Users');

final docUser = FirebaseFirestore.instance.collection('Users').doc();

FirebaseAuth auth = FirebaseAuth.instance;
String? uid = docUser.id;
// String? uid = auth.currentUser?.uid.toString();
String? email = auth.currentUser?.email.toString();
String? phone = auth.currentUser?.phoneNumber.toString();
String? displayName = auth.currentUser?.displayName.toString();

users.add({'Uid': uid, "Email": email, "Phone": phone, "Name": displayName});
return;
}

enter image description here

推荐答案

将数据添加到数据库后,您必须立即更新uid.因为在从FiRestore数据库添加该数据之前,您无法获取ID.

您将通过以下代码获得它:

 Future<void> userSetupDone() async {
    CollectionReference users = FirebaseFirestore.instance.collection('Users');
    
    final docUser = FirebaseFirestore.instance.collection('Users').doc();
    
    FirebaseAuth auth = FirebaseAuth.instance;

    String? email = auth.currentUser?.email.toString();
    String? phone = auth.currentUser?.phoneNumber.toString();
    String? displayName = auth.currentUser?.displayName.toString();
    
    DocumentReference reference= await users.add({'Uid': '', "Email": email, "Phone": phone, "Name": displayName});
    await reference.update({"Uid": reference.id});
    return;
}

Flutter相关问答推荐

如何将图像从顶部和底部半向外设置为飘动

如何更新文本字段的基础上的选定下拉菜单?

为什么我需要等待重新访问Firestore数据库,即使它已经做了之前?

查询满足AND条件的文档的FiRestore

GitHub Actions工作流secret中的特殊字符未被保留

如何使DropDownMenu宽度等于TextFormfield?

Flutter:我的应用程序是否需要包含退款购买?

Flutter中pubspec.yaml文件中的name参数是什么?

模块是使用不兼容的 kotlin 版本编译的.其元数据的二进制版本是1.8.0,预期版本是1.6

仅在获取(读取)、Provider 时,Firestore 中的数据为空

点击后,将按钮的 colored颜色 禁用/更改一段时间

Riverpod 2.3.6:AutoDisposeNotifier和ref.onDispose自动处理

如何计算 Firestore 集合中的文档数量?

Flutter - firebase_auth_web 5.4.0 依赖于 intl ^0.17.0 但我必须使用更高版本 (intl ^0.18.0)

Flutter 分析发现 Gitlab CI/CD 管道中的问题,但它在本地没有

当我使用 Confetti Widget 时,Flutter Android 和 IOS 应用程序崩溃

如何在两个不同的路由(屏幕)之间正确设置 BlocProvider?

Flutter 在气泡聊天消息上对齐时间戳文本

在flutter web中重新加载页面时保留一些状态数据的有效方法是什么?

RangeError(索引):无效值:有效值范围为空:点击文章时为0