首页 > 解决方案 > 在注册时获取新用户的名称并使用 Cloud Functions 存储在数据库中

问题描述

在我的客户中,我有一个注册屏幕,用户在其中提供姓名、电子邮件和密码以进行注册。

发生这种情况时,我想在我的 Firestore 数据库中创建一个用户文档,其中包含该用户的姓名和电子邮件。

截至目前,我设法获得了该用户的电子邮件,但我无法保存其名称:

export const createUserDocument = functions
.region(config.cloud_functions.region)
.auth.user().onCreate((user, context) => {
    const documentRef = firestore.doc(`Users/${user.uid}`);
    return documentRef.set({ email: user?.email}); 
});

应在客户端中的以下代码之后调用云函数:

  @override
  Future<void> signupWithCredentials(String email, String password) async {
    try {
      await _firebaseAuth.createUserWithEmailAndPassword(
        email: email,
        password: password,
      );
    } catch (e) {
      return handleFirestoreError(e);
    }
  }

标签: typescriptfirebasegoogle-cloud-firestorefirebase-authenticationgoogle-cloud-functions

解决方案


使用 Firebase 身份验证创建的新电子邮件/密码帐户没有与之关联的名称。虽然您可以在创建后使用 添加名称updateProfile(),但该信息不会使其进入身份验证触发器。

如果要向文档添加名称,则必须对触发器创建的文档进行另一次更新。


推荐阅读