如何在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”。这是正确的方法吗?我不确定。
答案 0 :(得分:3)
我认为你的例子没什么不好的。当然,只要您在firestore
数据库:)
另一件事是IMO在使用实时数据库和Firestore数据库方面没有区别。不同之处在于体系结构以及它如何在“幕后”工作,但整体用法 - 这非常相似(API与AFAIK略有不同)。
我可以向您推荐的另一种解决方案是使用Firebase函数和Firestore触发器在Web应用程序外部编写数据库 - https://firebase.google.com/docs/auth/extend-with-functions此解决方案将删除createUser
函数的必要性客户端。
答案 1 :(得分:1)
是的,这是正确的方法,您将在该集合中有一个名为Users
的集合,将会有一个doc(username)
的文档,其值为id: userid
您也可以将userid
保存为对象,在该对象中,您将拥有与该useruid
就像这个例子:
var frankDocRef = db.collection("users").doc("frank");
frankDocRef.set({
name: "Frank",
favorites: { food: "Pizza", color: "Blue", subject: "recess" },
age: 12
});
https://firebase.google.com/docs/firestore/manage-data/add-data#update_fields_in_nested_objects