typescript - 在注册时获取新用户的名称并使用 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);
}
}
解决方案
使用 Firebase 身份验证创建的新电子邮件/密码帐户没有与之关联的名称。虽然您可以在创建后使用 添加名称updateProfile()
,但该信息不会使其进入身份验证触发器。
如果要向文档添加名称,则必须对触发器创建的文档进行另一次更新。
推荐阅读
- sql - 将 Firebird fdb 从 old.fdb 复制到 new.fdb,结构略有不同
- php - Laravel 图片上传到数据库
- xcode - 没有在 Cordova App 的 IOS 构建上工作的链接
- r - 在 R 中:在列中搜索不同的字符串模式并替换所有这些模式
- sql - 如何在 SQL 中获取具有不同日期的不同文件名
- python - Python 一种用于合并具有共同值的字典的衬垫
- c++ - 在游戏中使用状态模式
- node.js - 我不小心使用了浏览器同步而没有转到本地文件夹
- java - 如何将参数值从一种方法传递到同一类中的另一种方法
- python - 如何解耦我的 python 应用程序的两个组件