我想在React Native中创建一个允许在两种模式下工作的应用程序,父模式和子模式。初始阶段是向Firebase注册,然后添加有关角色(父/子)的其他信息,同时注册子代和父代,并在登录它们两者后,子代将共享位置,父代将收到位置。>
我想在React Native + Firebase的应用程序中添加其他字段,例如角色(父/子),以便稍后基于角色创建应用程序的其他功能。
注册:
firebase
.auth()
.createUserWithEmailAndPassword(email, password)
.then(userCredentials => {
return userCredentials
.user.updateProfile({
displayName: name,
})
.additionalUserInfo.profile = {
role: role,
}
})
主屏幕
const { displayName } = firebase.auth().currentUser;
const { role } = firebase.additionalUserInfo.profile;
this.setState({displayName, role});
并且角色返回未定义。
答案 0 :(得分:2)
您可以存储在用户配置文件中的属性由Firebase身份验证定义。您不能随便添加其他合适的属性。最好的情况是,Firebase只会忽略这些内容,但有可能还会明确拒绝它们(引发错误)。
如果要存储有关用户的其他信息,则有两个主要选项:
虽然将数据存储为自定义声明与您要完成的目标非常接近,但您需要牢记以下几点:
role
,并且需要一个单独的过程来添加该声明。role
可以轻松满足要求,但可能会限制您以后添加的内容。相反,如果您将用户数据存储在外部数据库中,则通常会将其与有关该用户的其他信息合并到一个users
节点/集合中。在此处,您将根据该用户的UID,然后是其个人资料信息,为每个用户存储一个文档/节点。
类似这样:
users: {
uidOfAleksandra: {
username: "Aleksandra",
displayName: "Aleksandra Lastname",
role: "parent",
registrationDate: "2020-02-01"
},
uidOfPuf: {
username: "puf",
displayName: "Frank van Puffelen",
role: "child",
registrationDate: "2015-03-07"
},
}
拥有此用户配置文件列表不仅可以让您存储每个用户的其他信息,而且还可以让您从应用程序内查询该用户列表,而Authentication API不允许在内部进行此操作应用程序代码。