我有一个onCreate的云函数,看起来像
exports.addNewUserToCollection = functions.auth.user().onCreate(event => {
const user = event.data; // The Firebase user.
var userData = JSON.parse(JSON.stringify(user));
if (!userData.displayName){
userData.displayName = '(no name)'
}
return db
.collection("users")
.doc(user.uid)
.set(userData);
});
除非用户通过电子邮件注册时才能正常工作 当用户通过电子邮件注册时,系统会提示他们输入姓名,这些信息会将其输入到身份验证数据中 我知道这一点,因为在他们的会话中我可以调用getCurrentUser()并检索他们的displayName属性。
上面代码中的事件数据不包含displayName(或者该名称的姓名)
是什么给出了?
答案 0 :(得分:0)
在Firebase身份验证中创建电子邮件+密码帐户时,只需指定最低限度的信息:电子邮件和密码。例如在iOS上,这是:
Auth.auth().createUser(withEmail: email, password: password) { (user, error) in
// ...
}
您的云功能是通过以下精确信息触发的:只需要电子邮件和密码。
虽然以后可以更新用户配置文件以包含显示名称,但该信息不会传递到云功能触发器(目前仅在创建帐户时触发)。