0

FirebaseのusersRefにデータを保存しようとしていますが、間違ったキー(userId)で保存されています。間違ったユーザIDにデータを格納しているFirebase

新しいユーザーを登録した後、私はそれらに一定の金額のクレジットを与えます。

addUser: function() { 
     firebase.auth().createUserWithEmailAndPassword(this.newuser.email, this.newuser.password).catch(function(error) { 
      // Handle Errors here. 
      var errorCode = error.code; 
      var errorMessage = error.message; 
      // ... 
     }); 
     console.log("adding user"); 
     try { 
      var user = firebase.auth().currentUser;  
      var userRef = database.ref('users/' + user.uid + '/'); 
      userRef.set({'credits': this.newuser.credits}); 
      if (user){ 
       this.logInShow = false; 
      } 
     } 
     catch(err){ 

     } 
    },   

他の場所でユーザーがクレジットと同じユーザーIDに格納されるべきオファーを、展開することができます。しかし、新しいuserIDが作成され、クレジットプロパティを持つuserIdとオファーを持つuserIdが残っています。

deployOffer: function(){ 
    try { 
     var user = firebase.auth().currentUser;  
     var userOffersRef = database.ref('users/' + user.uid + '/offers'); 
     offersRef.push(this.newoffer); 
     userOffersRef.push(this.newoffer); 
     this.offerShow = false; 
     this.post = false; 
    } catch (err){ 
     console.log(err); 
    } 
}, 

登録したときにfirebase.auth().currentUser.uidが別のキーを返す方法を教えてください。ここに私のデシベルを提示申し出を登録して、投稿した後のように見えるものです:あなたは、あなたのコード内の競合状態を持っている

enter image description here

答えて

1

。ユーザーの作成には時間がかかるため、非同期操作です。しかし、あなたは即座にユーザーの初期クレジットを書いています。つまり、実際に以前にサインインしたユーザーに書いています(プロセスで既存のクレジットとオファーを上書きします)。

addUser: function() { 
    firebase.auth().createUserWithEmailAndPassword(
     this.newuser.email, 
     this.newuser.password 
    ).then(function(user) { 
     console.log("adding user"); 
     var userRef = database.ref('users/' + user.uid + '/'); 
     userRef.set({'credits': this.newuser.credits}); 
     if (user){ 
      this.logInShow = false; 
     } 
    }).catch(function(error) { 
     // Handle Errors here. 
     var errorCode = error.code; 
     var errorMessage = error.message; 
     // ... 
    }); 
},  

ソリューションはcreateUserWithEmailAndPasswordの完了リスナーの最初のクレジットを書くことです

関連する問題