2017-03-27 11 views
0

fireツリー内に同じツリーの別の子ノードに移動する必要のあるユーザオブジェクトがあります。Firebaseオブジェクトを別の子ノードに移動/コピーする

構造はそうのようなものです:

users -> male -> uid -> ......KVPs..objects...etc 
     -> female -> uid -> ......KVPs..objects...etc 

私はアプリの性質による男女別のユーザーを維持する必要があります。 ユーザーが性別を変更した場合、そのすべての詳細をその選択した性別に移動したいと考えています。

私はAngularFire(firebaseObject)を使ってみましたが、オブジェクトにあるキーのためfirebaseで設定しようとするとエラーが発生します。私は、JSON.stringify、angular.toJSONを使用してキーをストライピングしようとしましたが、運がまったくありません!!

これを行うには、クリーナーまたは推奨の方法がありますか? ありがとうございました。誰かがポインタを持っていたり、とにかく助けてもらえれば。これは、実際に

// firebase ref 
    desc.ref1 = new Firebase(desc.userRef+'/'+desc.oldGender+'/'+uid); 
    desc.ref2 = new Firebase(desc.userRef+'/'+desc.gender+'/'+uid); 

    desc.ref1.on("value", function(snapshot) { 
     console.log(snapshot.val()); 

     desc.ref2.set(snapshot.val()); 

    }, function (errorObject) { 
     console.log("The read failed: " + errorObject.code); 
    }); 

答えて

1

既存のデータの読み込み、削除、書き換えをすることなく、名前、性別、場所などを自由に変更することができます。

これは、クエリの方がずっと柔軟で、各ユーザーに追加のデータを追加します。

私はこのユースケースでは動作しないかもしれませんが、大きな画像ではベストプラクティスです。

0

は私が実際に

users 
    uid_0 
    name: "some name" 
    gender: "male" 
    loc: "US" 
    uid_1 
    name: "another name" 
    gender: "female" 
    loc: "FR" 

それはまだ性別の分離を提供して周りを移動ノードの代わりに構造を変更することをお勧め非常に簡単です

多くのおかげで、 ノエル

0

お返事ありがとうございます。私は元々これが好きでしたが、私はまだUIDの下で性別を捕まえましたが、私は男性と女性を分けたかったのです。私のアプリはデートのためのものなので、好みの性別属性に基づいて検索する方が効率的だと思っています。最初は50%少ないノードで検索すると思います。これについてのアドバイスがあれば、firebase/JSONのパフォーマンスのベストプラクティスについてはあまり気にしないでください。

私は誰かに役立つ可能性があるため、コピーとクリーンアップに使用したコードを投稿します。私は '聞き手'に問題があり、両方のノードを削除していました。これを 'once'に変更すると解決しました。

// firebase refs 
    desc.ref1 = new Firebase(desc.userRef+'/'+desc.oldGender+'/'+uid); 
    desc.ref2 = new Firebase(desc.userRef+'/'+desc.gender+'/'+uid); 

// copy user object 
    desc.ref1.once("value", function(snapshot) { 

     // copy user data to new gender tree 
     desc.ref2.set(snapshot.val(), function(error) { 
      if (error) { 
       $log.info("could not copy user object." + error); 
      } else { 
       $log.info("user object copied successfully."); 

       // remove user object under old gender 
       desc.ref1.remove(desc.onComplete); 
      } 
     }); 
    }, function (errorObject) { 
     $log.info("The read failed: " + errorObject.code); 
    }); 
関連する問題