2016-09-02 2 views
0

firefillbase에 push("number")을 삽입하면 angularfire2와 함께 숫자가 직접 추가되지 않고 생성 된 코드 안에 중첩됩니다.Angularfire2 - 목록에 항목을 직접 추가합니다.

내부 중포 기지 실시간 데이터베이스 :

1) 초기 코드 :

"myList": { 
    "0": { 
     "key1": "val1" 
    }, 
    "1": { 
     "key2": "val2" 
    } 
    } 

2) 새로운 객체가 직접 추가되지 않은 이유

"myList": { 
    "0": { 
     "key1": "val1" 
    }, 
    "1": { 
     "key2": "val2" 
    }, 
    "-generatedcode_": { 
     "key3": "val3" 
    } 
    } 

.push({"key3": "val3"}) 후,없이 중첩?

답변

6

예상되는 동작입니다. AngularFire2의 FirebaseListObservablepush 기능을 사용하는 고유 정렬 키 생성 기본 중포 기지 API의 push :

현재 시간으로 정렬() 푸시에 의해 생성 된 고유 키, 그래서 항목의 결과 목록이 될 것이다 연대순으로 분류. 키는 틀림없이 디자인됩니다 (72 개의 무작위 비트의 엔트로피가 있음).

push은 여러 사용자가 한 위치로 데이터를 푸시 할 수 있도록 고유 키를 생성합니다. 문제가되지 않고 "2" 키를 만들려면이를 수행 할 수 있지만 FirebaseListObservable 키를 사용하여 수행 할 수는 없습니다. 당신은 기본 중포 기지 API 사용할 수 있습니다

firebase.database().ref("/myList/2").set({ "key3": "val3" }); 

을 또는 당신은 AngularFire2 FirebaseObjectObservable을 사용할 수

let o = af.database.object("/myList/2"); 
o.set({ "key3": "val3" }); 

afAngularFire 인스턴스입니다.

set을 수행 한 후 FirebaseListObservable 인스턴스가 새로 추가 된 데이터를 포함하도록 업데이트되어 있어야합니다.

+0

문제의 좋은 설명. 또한 푸시 ID를 생성하지 않고 단순히 자식 '2'의 값을 설정하는 방법을 보여줄 수 있습니까? –

+1

"2"를 키로 사용하는 두 가지 대안을 포함하도록 답변을 업데이트했습니다. – cartant

+0

좋아요. 그리고 실제로 : 다중 사용자에 관한 것은 많은 상황에서'push() '를 선호하는 것입니다. –