Cloud Firestoreデータベースに追加のユーザーデータを保存するにはどうすればよいですか?つまり、どちらが適切な方法ですか?ユーザー名とその他のデータを保存できるユーザーコレクションを作成します。私はすでにこの問題についての回答を見つけましたが、それらのすべてが「古い」Firebase Realtime Databaseソリューションを使用しています。
今私はこのようにしています(これは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」として保存するだけです。これは正しい方法ですか?私はそれについてはよく分かりません。
あなたの例に悪いことは何もないと思います。もちろん、firestore
データベースに適切なセキュリティルールを設定している限り:)
もう1つは、IMOがRealtime DatabaseとFirestoreを使用しても違いがないことです。違いは、アーキテクチャとそれが「舞台裏」でどのように機能するかですが、全体的な使用法-これは非常によく似ています(APIはわずかに異なるAFAIKです)。
私がお勧めできるもう1つの解決策は、Firebase FunctionsとFirestoreトリガーを使用して、Webアプリの外部でデータベースに書き込みを行うことです https://firebase.google.com/docs/auth/extend-with-functions このソリューションは、クライアント側でのcreateUser
関数の必要性を排除します。
はい、これは正しい方法です。そのコレクション内に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