如何通过查询其UID创建FirebaseAuth用户?

am46iovg  于 2022-12-24  发布在  其他
关注(0)|答案(1)|浏览(117)

我对如何管理用户感到有点困惑。
我的应用程序通过FirebaseAuth成功创建了正在创建分类广告的用户帐户。
我需要从用户UID中获取广告的所有者,到目前为止,我的代码如下所示:

Future<Map<String, dynamic>?> getUser(String uid) async {
    final d = await FirebaseFirestore.instance
        .collection("User")
        .where("id", isEqualTo: uid)
        .get();

    if (d.docs.isEmpty) return null;

    return d.docs.first.data();
  }

这段代码应该将给定的用户作为Map获取。
现在,我想把Map<String,dynamic>转换成一个实际的User示例,但是我该怎么做呢?
这是正确的方法吗?因为我想知道User是否应该只致力于“认证的自我”。

vhmi4jdf

vhmi4jdf1#

如果我没猜错的话,你说的是firebase_auth包里的User吗?你不能把Map<String, dynamic>转换成User,我的意见是把它转换成一个模型,看看下面的例子:

class UserModel {
  UserModel(
    this.id,
    this.name,
    this.email,
    …
  );

  final String id;
  final String name;
  final String email;
  …

  factory UserModel.fromMap(Map<String, dynamic> data, String documentId) {
    final String? name = data["name"];
    final String? email = data["email"];
    …

    return UserModel(
      documentId,
      name ?? "",
      email ?? "",
      …
    );
  }

  Map<String, dynamic> toMap() => {
        "name": name,
        "email": email,
        …
      };
}
UserModel.fromMap(d.docs.first.data(), d.docs.first.id),
UserModel(
  "Name",
  "Email",
  …
).toMap(),

相关问题