我使用推荐的方法通过Firestore
函数在我的项目中使用createUserWithEmailAndPassword()
创建用户:
firebase.auth().createUserWithEmailAndPassword(this.email, this.password).then(
(user) => {
this.$store.commit('setUserId', user.user.uid);
},
(error) => {
alert('Oops. ' + error.message)
}
);
但是我想为每个用户添加额外的数据,即一个包含他/她从事的所有项目的对象。
Firestore
是否允许这样的操作(如果可以,怎么办?),或者我必须通过创建自己的userData
集合(例如,将userId
字段与额外的projects
字段?
答案 0 :(得分:0)
我过去采用的方法是将专用的“用户”集合中的文档与Firebase用户UID的ID配对。
db.collection('users').doc(firebase.auth().currentUser.uid).set(...)
然后在身份验证逻辑中,我检查是否有任何用于记录用户帐户状态的标志;例如您可能希望进行入职等。
firebase.auth().onAuthStateChanged((user) => {
if (user) {
const userRecordRef = db.collection('users').doc(user.uid)
userRecordRef.get()
.then(doc => {
if (doc.exists) {
if (doc.data().onboardingStatus === 'new_user') {
root.$router.push('/onboarding')
}
...
})
.catch(...)
...
}
...
}
由于这是客户端代码,因此应使用Firestore安全规则来确保用户文档在每次更新时都处于正确的状态。