问题:创建用户帐户时,如何使用云功能将displayName保存到firebase中的实时数据库
方案步骤:
我有一个包含email, password, displayName
字段的注册页面,
允许用户在firebase中创建新帐户
上面的页面将1)触发createUserWithEmailAndPassword
来创建
用户帐户,2)将displayName
值保存到Auth DB中的userProfile。
在云端功能中,使用以下代码,以便新用户的电子邮件可以
保存到DB users
节点。
exports.createProfile = functions.auth.user().onCreate(event =>
return admin.database().ref(`/users/${event.data.uid}`).update
({email: event.data.email})
displayName
保存到users
节点,但似乎不可能,因为它不在event
onCreate
的上下文中。我该怎么办?如果我需要使用客户端和云功能来更新users
节点,那就太讨厌了。
祝你好运, d
答案 0 :(得分:1)
firebase.User.updateProfile()
方法完成后,您需要使用displayName
方法更新firebase.auth().createUserWithEmailAndPassword(email, password)
。像这样 -
firebase.auth().createUserWithEmailAndPassword(email, password).catch(function (error) {
}).then(function (user) {
user.updateProfile({
displayName: "Jane Q. User",//pass displayName from your signup form here
photoURL: "<image-url>"//you can pass this empty
}).then(function () {
//redirect to your post-registration page
});
})
答案 1 :(得分:0)
auth事件的documentation表明displayName可以通过event.data.displayName
访问。如果你看到任何其他行为,那就是一个错误,或者你可能做错了,你在这里没有提到。