2016-06-26 16 views
1

DB 구조내 프로그램이 중포 기지

questions 
    questionId 
    options 
    optionId 
     label   
     score 
     ... 

에 addChildEventListener 결과 얻을 수 없습니다 먼저 내 코드에서 데이터베이스 참조를 만들었습니다.

mQuestionDatabaseReference = FirebaseDatabase.getInstance().getReference("questions").child(questionId).child("options").child(optionId); 

그런 다음 옵션을 사용하여 트랜잭션을 사용하여 점수 값을 변경했습니다.

mQuestionDatabaseReference.child("score").runTransaction(new Transaction.Handler() { ... 

점수 값을 성공적으로 업데이트 할 수 있습니다. 이제 데이터베이스에서 점수가 이미 업데이트되었는지 알고 싶습니다. addChildEventListener을 사용하여 UI를 업데이트 할 수 있습니다.

mQuestionDatabaseReference.addChildEventListener(new ChildEventListener() {.. 

이 것은 괜찮습니다. 자, 옵션의 점수 하위가 전체 옵션이 아닌 업데이트되었는지 알고 싶습니다. 그래서 내가 했어

mQuestionDatabaseReference.child("score").addChildEventListener(new ChildEventListener() {.. 

이제이 새로운 자식 이벤트 수신기는 옵션을 성공적으로 업데이트하면 결과를 가져올 수 없습니다.

+0

'/ optionId/score' 안에 어떤 종류의 데이터가 있습니까? – adolfosrs

+0

int 타입 데이터 (숫자) – devadnqpnd

답변

2

당신은 ChildEventListener/optionId/score뿐만 점수가 실제로 아이가없는 추가, 그래서 콜백 트리거되지 않습니다.

이 경우 ValueEventListener을 사용해야합니다.

mQuestionDatabaseReference.child("score").addValueEventListener(
    new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      //dataSnapshot.getValue ... 
     } 
}); 

firebase events documentation에 대한 자세한 정보를 확인하십시오.

+0

음, 나는 메소드 이름을 더 읽을 필요가 있다고 생각합니다. 고맙습니다! – devadnqpnd

+0

@devadnqpnd hsuahsua. 이것은 항상 발생합니다. :) 잘 질문에 대한 축하해! – adolfosrs