>웹 프론트엔드 >JS 튜토리얼 >2시간이 지난 Firebase 데이터를 삭제하는 방법은 무엇입니까?

2시간이 지난 Firebase 데이터를 삭제하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-07 22:06:15808검색

How to Delete Firebase Data Older Than Two Hours?

2시간이 지난 Firebase 데이터 삭제

질문:

지연 시간과 데이터베이스 성능을 최적화하려면 오래된 데이터를 효율적으로 삭제하는 것이 중요합니다. 이 질문은 2시간이 넘은 Firebase 데이터를 제거하는 방법을 모색합니다.

해결책:

Firebase에서는 "2시간 전"과 같은 동적 매개변수를 사용한 쿼리를 허용하지 않습니다. ." 대신 "과거 특정 날짜 및 시간 이후"와 같은 특정 타임스탬프에 대한 쿼리를 실행할 수 있습니다.

오래된 데이터를 삭제하려면 다음 코드 조각을 고려하세요.

var ref = firebase.database().ref('/path/to/items/');
var now = Date.now();
var cutoff = now - 2 * 60 * 60 * 1000;
var old = ref.orderByChild('timestamp').endAt(cutoff).limitToLast(1);
var listener = old.on('child_added', function(snapshot) {
    snapshot.ref.remove();
});

작동 방식은 다음과 같습니다.

  • 값 대신 child_add를 사용하세요.
  • 설정 LimitToLast(1)는 컷오프 후 마지막 항목만 삭제되도록 합니다.
  • 항목이 삭제되면 Firebase는 오래된 항목이 모두 제거될 때까지 다음 "마지막" 항목에 대해 child_ added를 트리거합니다.

Firebase용 Cloud Functions의 경우:

exports.deleteOldItems = functions.database.ref('/path/to/items/{pushId}')
.onWrite((change, context) => {
  var ref = change.after.ref.parent;
  var now = Date.now();
  var cutoff = now - 2 * 60 * 60 * 1000;
  var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff);
  return oldItemsQuery.once('value', function(snapshot) {
    var updates = {};
    snapshot.forEach(function(child) {
      updates[child.key] = null
    });
    return ref.update(updates);
  });
});

이 함수는 다음을 실행합니다. /path/to/items에서 데이터가 수정될 때마다 수정되는 경우에만 하위 노드를 삭제합니다.

위 내용은 2시간이 지난 Firebase 데이터를 삭제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.