2016-06-21 1 views
0

내 응용 프로그램에서 개체를 통해 루프를 시도하고 데이터베이스에 이미 30 개의 메시지가있는 경우 이전 메시지를 삭제하려고합니다. 여기 내 코드는 지금까지 있습니다 :Firebase에서 객체 제거? (JavaScript)

var ref1 = firebase.database().ref("chatRooms/" + rm + "/messages"); 
var query = ref1.orderByChild("time"); 

query.once("value").then(function(l) { 
    l.forEach(function(d) { 
     ref1.once("value").then(function(snapshot1) { 
     var ast = snapshot1.numChildren(); // Getting the number of children 
     console.log(ast); 
     if (ast > 29) { 
     d.remove(); 

     } 
    }); 
    }); 
}); 

유일한 문제는 내가 각각에 대해 다음과 같은 오류가 나타날 수 있다는 것입니다 :

SCRIPT438: Object doesn't support property or method 'remove'.

사람이이 문제를 해결하는 방법을 알고, 또는 대안으로 알고있는 경우

, I '고마워!

답변

0

d은 특정 시간에 지정된 위치의 값을 나타내는 DataSnapshot입니다. 직접 제거 할 수 없습니다. 니펫을

d.ref.remove(); 

전체 작업 (간체) :

하지만 당신은 값이에서 인 위치를 찾아 볼 수있다 remove() 전화

function deleteMessages(maxCount) { 
    root.once("value").then(function(snapshot) { 
    var count = 0; 
    snapshot.forEach(function(child) { 
     count++; 
     if (count > maxCount) { 
     console.log('Removing child '+child.key); 
     child.ref.remove(); 
     } 
    }); 
    console.log(count, snapshot.numChildren()); 
    }); 

} 

deleteMessages(29); 

라이브 코드 샘플 : http://jsbin.com/tepate/edit?js,console

+0

답장을 보내 주셔서 감사합니다. 이제이 오류가 나타납니다. SCRIPT5002 : 예상 된 기능입니다. ? – Collin

+0

콘솔의 Firebase에서이 경고를받습니다. ** FIREBASE WARNING : 사용자 콜백에 의해 예외가 발생했습니다. TypeError : 예상되는 기능 **. – Collin

+0

문제를 재현하는 jsfiddle/jsbin을 설정할 수 있습니까? 그런 식으로 코드를 수정하는 방법을 보여주기가 쉽습니다. –