0

ここにタスクがあります。ユーザーが作成されると、それらのインスタンスをメインデータベースに追加して、それらに関連付けられたもの(リストやレシピ)を持たせたいと考えています。 .set().update()を実行しようとしましたが、どちらも自分のDB内にユーザーのインスタンスを追加したが、新しいユーザーが登録されるたびに上書きされてしまいます。その情報を上書きしないようにするにはどうすればいいですか?私は見つけた情報に基づいて自分の投稿を検索して更新し続けます。ここに私が持っている認証コードです。Firebaseデータベースにそのユーザのインス​​タンスを追加するユーザを作成するとどうなりますか?

app.controller("SampleCtrl", ["$scope", "Auth", 
    function($scope, Auth) { 
    $scope.auth = Auth; 

    $scope.createUser = function() { 
     $scope.message = null; 
     $scope.error = null; 

     // Create a new user 
     Auth.$createUserWithEmailAndPassword($scope.email, $scope.password, $scope.name) 
     .then(function(firebaseUser) { 
      $scope.message = "User created with uid: " + firebaseUser.uid; 
      const uid = firebaseUser.uid; 
      const dbref = firebase.database().ref().child('users'); 
      dbref.update({ 
      id: uid, 
      name: $scope.name 
      }); 
      console.log(dbref.uid); 
     }).catch(function(error) { 
      $scope.error = error; 
     }); 
    }; 

    $scope.deleteUser = function() { 
     $scope.message = null; 
     $scope.error = null; 

     $scope.auth.$onAuthStateChanged(function(firebaseUser) { 
     $scope.firebaseUser = firebaseUser; 
    }); 

     // Delete the currently signed-in user 
     Auth.$deleteUser().then(function() { 
     $scope.message = "User deleted"; 
     }).catch(function(error) { 
     $scope.error = error; 
     }); 
    }; 
    } 
]); 

ありがとうございます!

****** EDIT **********

さて、情報が追加されるので、私が得たではなく、私は期待道インチ構造をこのようにしたい ユーザー ----- id ------- info idはキーで、infoは新しいオブジェクトを保持する値です。 私はこれを取得しています... a random serialized ID and then my user id and information object

質問はどうなりましたか?ランダムなシリアル化されたキーを取り除くにはどうすればよいですか?

答えて

1

ここでの問題は、ユーザーノードに直接書き込むことですが、すべてのユーザーに独自のノードを持たせることです。あなたはこのように、より深いレベル1を書き込むことによってこの問題を解決することができます

const dbref = firebase.database().ref().child('users').child(uid); 
dbref.update({ 
    name: $scope.name 
}); 

あなたはまた、私は、このプロセス全体を囲む詳細のために書いたthis answerを見てみることができます。

+1

私はこれをあなたがリンクした質問の重複とみなします。あなたがそれを閉じて(あなたの他の/より長い答えの重さを増やすように)それを閉じるとOKですか? –

+0

良いアイデア、私は重複としてそれをフラグすることを忘れました –

1

問題は、各ユーザーをキーのフォームの下に置く必要があることです。これで、ユーザーオブジェクトを新しいデータで更新し、上書きします。それはどのようにfirebaseが動作するのですか?

あなたはこのような何かを行うのであれば、その後、実行

const dbref = firebase.database().ref().child('users').child(userid); 
dbref.update({ 
    name: $scope.name 
}); 

それとも

ユーザーIDは、あなたが知っているものと一意のIDのいくつかの並べ替えで、これは電子メールか何かかもしれない
const dbref = firebase.database().ref('users/'+userid); 
dbref.update({ 
    name: $scope.name 
}); 

を更新その人をもう一度見たいので、このキーを使用する必要があります。

ファイアベースは、3つのすべての場所にURLとしてアクセスできるので、

+0

ありがとうございました!それはとてもうまくいった。もはや奇妙なシリアル化されたキーはありません! –

関連する問題