如何在Cloud Firestore数据库中保存其他用户数据?我的意思是,哪一个是正确的方法?我想创建一个用户集合,我可以在其中存储用户名和其他数据 . 我已经找到了关于这个问题的答案,但他们都在使用“旧的”Firebase实时数据库解决方案 .
现在我正在这样做(这是一个Vue组件):
methods: {
doSignUp () {
if (!this.email || !this.password) {
return
}
firebase.auth().createUserWithEmailAndPassword(this.email, this.password)
.then(data => {
this.createUser(data)
}).catch(err => console.log(err))
},
createUser (userObject) {
const docRef = this.$store.getters.getDB.collection('users')
const username = userObject.email.split('@')[0]
docRef
.doc(username)
.set({
id: userObject.uid,
username
}).then().catch((err) => console.log(err))
}
}
在上面的示例中,我只是在“users”集合中创建一个新文档,并将用户的ID保存为“id” . 这是正确的方法吗?我不确定 .
2 回答
我认为你的例子没什么不好的 . 当然只要你在
firestore
数据库上设置适当的安全规则:)另一件事是IMO使用实时数据库和Firestore没有区别 . 不同之处在于体系结构以及它如何在“幕后”工作,但整体用法 - 这非常相似(API只是略有不同的AFAIK) .
我可以推荐的另一种解决方案是使用Firebase函数和Firestore触发器在Web应用程序外部编写数据库 - https://firebase.google.com/docs/auth/extend-with-functions此解决方案将消除客户端
createUser
函数的必要性 .是的,这是正确的方法,你将在该集合中有一个名为
Users
的集合,将有一个这个doc(username)
的文档,其值为id: userid
您也可以将
userid
保存为对象,并且在该对象中您将拥有与该对象相关的值useruid
像这样的例子:
https://firebase.google.com/docs/firestore/manage-data/add-data#update_fields_in_nested_objects