前提・実現したいこと
龍馬と申します。マッチングアプリを作っています。
FIrebaseについて質問がございます。
childByAutoIdでランダムにidを生成した後、その下にそのuserのデータを格納(追加)したく思います。
以下添付図のとおり、データ自体はDBヘstoreされているのですが、毎回違うidが生成され、その下にstoreしてしまいます。
どうすれば同じIdを取得し同じid下にデータをstoreできるか、ご教示いただけますと幸いです!
書いたコードも最後に載せます。お手数ですが、よろしくお願いいたします。
該当のソースコード
facebook login時に情報を取得、firebaseへstoreしているコード
facebookLogin.swift
swift
1func postUser(){ 2 guard let user = Auth.auth().currentUser else{ 3 assert(true, "post user with nil") 4 return 5 } 6 7 let facebookId = FBSDKAccessToken.current().userID 8 let userRef = ref.child("Users") 9 10 userRef 11 .queryOrdered(byChild: "facebookId") 12 .queryEqual(toValue: facebookId) 13 .observeSingleEvent(of: DataEventType.value) { (snapshot) in 14 if snapshot.exists() { 15 print("Exist user") 16 17 }else{ 18 19 20 let postUser = ["facebookId": FBSDKAccessToken.current().userID, 21 "name": user.displayName] 22 let postUserRef = userRef.childByAutoId() 23 24 postUserRef.setValue(postUser) 25 } 26 27 }
ユーザ情報を編集するファイルコード
myPageUpdata.swift (ここでfirebaseへstore時に同じユーザのテーブルへstoreしたい)
swift
1 //完了ボタンを押したら発火。firebaseへデータを保存。 2 @IBAction func completeButton(_ sender: Any) { 3 4 let user = Auth.auth().currentUser 5 6 //updateChildValues更新 keyが入っていなければkeyも保存する。値のみ更新する場合はsetvalue(setValueは指定した階層以下の全てを上書きする) 7 ref.child("Users").child((user?.uid)!).updateChildValues(["職業": workPlaces.text]) 8 ref.child("Users").child((user?.uid)!).updateChildValues(["学歴": education.text]) 9 ref.child("Users").child((user?.uid)!).updateChildValues(["性別": selectGender]) 10 11 } 12 13
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/31 11:14