0

10 시간 된 아이를 삭제하는 기능을 원합니다. 지금까지이 코드를 가지고 있지만 Firebase 클라우드 기능에 배포하면 즉시 데이터베이스에서 모든 데이터가 제거됩니다. 나는 내가 뭘 잘못하고 있는지 확신하지 못한다. 도와주세요!10 시간 후 Firebase 하위 삭제

exports.deleteOldItems = functions.database.ref('Rollerbanken/{pushId}') 
.onWrite(event => { 
    var ref = event.data.ref.parent; // reference to the items 
    var now = Date.now(); 
    var cutoff = now - 10 * 60 * 60 * 1000; 
    var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff); 
    return oldItemsQuery.once('value', function(snapshot) { 
    // create a map with all children that need to be removed 
    var updates = {}; 
    snapshot.forEach(function(child) { 
     updates[child.key] = null 
    }); 
    // execute all updates in one go and return the result to end the function 
    return ref.update(updates); 
    }); 
}); 

내 중포 기지 데이터베이스 구조 :

{ 
    "Rollerbanken" : { 
    "-Ku_Ywh8wElDdwNqa0KW" : { 
     "Extrainformatie" : "", 
     "Latitude" : "51.8306880305073", 
     "Longitude" : "5.90483402833892", 
     "Staater" : "Staat er nog steeds", 
     "Staaternietmeer" : "", 
     "Stad" : "Nijmegen", 
     "Tijd" : "19:50", 
     "TijdControle" : "19:50", 
     "TijdControleniet" : "", 
     "TypeControle" : "Rollerbank", 
     "TypeControle2" : "Rollerbank", 
     "postKey" : "-Ku_Ywh8wElDdwNqa0KW", 
     "timestamp" : 1506016223000 
     } 
     } 
    } 
+1

'Rollerbanken/{pushId}'에 저장된 항목의 예를 보여줄 수 있습니까? –

+0

물론 편집했습니다. – Danjhi

답변

0

당신은 당신의 코드에서 ref.orderByChild('timestamp')을 가지고 있지만 timestamp 필드 데이터에 없습니다. 이것은 null 타임 스탬프로 해석되며, Firebase에 의해 실제로 적용된 우선 순위는 ordering입니다. 결과적으로 모든 데이터 노드는 지정된 cutoff 전에 정렬되고 제거됩니다.

이 문제를 해결하려면 스키마에 timestamp 필드를 추가해야합니다.

+0

이제 구조에 타임 스탬프가 있습니다. "타임 스탬프": ServerValue.timestamp()하지만 여전히 작동하지 않습니다! – Danjhi

+0

나는 일지에 그것이 '괜찮아'라고 말한 일지. 그래서 나는 무슨 일이 일어나고 있는지 이해하지 못한다. – Danjhi