2017-03-27 1 views
0

나는 firebase에서 같은 트리의 다른 자식 노드로 이동해야하는 사용자 객체를 가지고 있습니다.Firebase 객체를 다른 자식 노드로 이동/복사

구조는 그래서 같다 : I 인해 응용 프로그램의 성격에 남녀로 구분 된 사용자를 유지할 필요가

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의 성능 모범 사례가 너무 좋지 않아서 듣고 싶습니다.

나는 누군가에게 도움이 될 수 있도록 복사 및 정리에 사용한 코드를 게시 할 예정입니다. 나는 '켜짐'수신기에 문제가 있었으며 두 노드를 모두 삭제했습니다. 이를 '한 번'으로 변경하면 해결되었습니다.

// 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); 
    }); 
관련 문제