我一直在关注Firebase SDK Admin - Manager User文档,并且使用该系统可以为我找到所有东西。无论哪种方式,我都希望使用诸如名,姓,国籍等字段来扩展我的用户信息。
现在我正在使用Vue.JS(前端),Axios(Http客户端)和Express.js(服务器)来管理我的项目,这就是我创建用户的方式:
Vue.JS createUser
方法:
createUser() {
axios.post('http://localhost:3000/users',
{
username: this.username,
email: this.email,
firstName: this.firstName,
lastName: this.lastName,
password: this.password,
}).then(r => {
console.log(r)
}).catch(e => {
console.log(e)
})
// createUser
}
每个字段:username
,email
,firstName
等……从普通的HTML表单中获得了价值,它们工作得很好。
这是我在服务器端的“用户创建”路线:
router.post('/', function (req, res, next) {
firebase.auth().createUser({
email: req.body.email,
username: req.body.username,
firstName: req.body.firstName,
lastName: req.body.lastName,
emailVerified: false,
password: req.body.password,
disabled: false
}).then(function(userRecord) {
console.log("Successfully created new user:", userRecord.uid);
}).catch(function(error) {
console.log("Error creating new user:", error);
});
});
这是我检索用户信息的方式:
router.get('/', function(req, res, next) {
firebase.auth().listUsers()
.then(function(listUsersResult) {
res.send(listUsersResult.users);
}).catch(function(error) {
console.log("Error listing users:", error);
})
});
问题是我无法获取添加的自定义字段(或者它们根本不存在)。这是我使用下一种方法获取数据后的图片:
getItems() {
axios.get('http://localhost:3000/users').then(r => {
this.users = r.data
}).catch(e => {
console.log(e)
})
},
有没有一种方法可以在用户创建时设置自定义字段,或者(如果我的过程正确的话)有一种方法来检索它们?
答案 0 :(得分:2)
Firebase用户不可自定义,很遗憾,您无法向该用户添加自定义字段... check out these docs for the properties of this object。还请检查this question & answer,其中弗兰克(Frank)解释说您需要单独存储任何其他信息...这通常是在数据库的表(命名为 /userDetails
)中完成的
答案 1 :(得分:0)
创建后,您可以立即设置用户的个人资料。
firebase.auth().createUserWithEmailAndPassword(
email,
password,
).then(credential => {
if (credential) {
credential.user.updateProfile({
displayName: username
})
}
}