0

일부 사용자가 일부 이벤트를 응용 프로그램에 넣고 다른 사용자가 볼 수있는 "이벤트"응용 프로그램을 구축 중입니다. 모든 이벤트에 시작 날짜/시간, 종료 날짜/시간 및 이름이 있다고 가정 해 봅시다.Firebase 데이터베이스의 데이터 만료 방법

사용자가 현재 이벤트 만 보길 원합니다. 즉, 시작이 < 인 이벤트 인 <이 끝납니다. 이것은 Firebase에서 지원되지 않는 일종의 필터링입니다. startAt 및 endAt 쿼리를 사용하여 응용 프로그램에서이 작업을 수행 할 수 있습니다. 그러나 내 애플리케이션이 과거 및 미래의 이벤트에 액세스하지는 못해도 누구나이 이벤트를보기 위해 REST API에서 데이터베이스를 쿼리 할 수 ​​있기 때문에 이는 사용자로부터 기밀 데이터를 숨기는 데 도움이되지 않습니다.

따라서 이벤트의 세 가지 목록, 즉 past_events, current_eventsfuture_events으로 데이터를 구조화하기로 결정했습니다.

자, 문제는 적절한시기 current_events에서 past_eventsfuture_events에서 current_events에 이벤트를 이동해야한다는 것입니다. firebase 내에서 이러한 변경 사항을 자동으로 트리거 할 수있는 방법이 없다고 생각합니다. 따라서 정기적으로 청소하는 서비스를 어딘가에 두려고합니다.

Firebase에서 데이터 만료를 처리하는 가장 좋은 방법입니까? 어떤 제안/코멘트?

감사

당신이 중포 기지에 저장된 각 이벤트의 종료 날짜가있는 경우
+0

Firebase 구조가 올바르게 설정된 경우 '움직이는'데이터를 '정리'로 변경하는 것이 일반적으로 필요하지 않을 수 있습니다. 예를 들어, 쿼리를 실행할 때 해당 노드에 저장된 타임 스탬프가 7 일 이전의 결과 만 반환합니다. 그렇게하면 코드가 코드를 처리 할 때 '만료되는'데이터에 대해 걱정할 필요가 없습니다. 또는 타임 스탬프가 지금부터 7 일인 노드에 대한 결과를 반환합니다. 코드와 Firebase Rules에서 수행되는 모든 작업은 사용자가 다른 데이터로 이동하는 것을 제한합니다. – Jay

+1

@Jay, 글쎄,''코드 처리부는 @Pawel Janicki의 답변과 동일합니다. 문제는 응용 프로그램 사용자로부터 데이터를 숨기지 만, 데이터베이스에 가서 쿼리 할 때입니다. 직접 (우편 배달부를 통해) 직접 모든 이벤트를 볼 수 있습니다. 응용 프로그램 쪽 쿼리를 사용하면 데이터베이스에 보안을 제공하지 않습니다. 이 데이터를 기밀로 유지하여 아무도 (스크립트 꼬마들도 포함해서) 아무도 볼 수 없도록하고 싶습니다. 보안 규칙을 통해서만이를 수행 할 수 있으며 보안 규칙은 필터링을 제공하지 않습니다. –

답변

0

, 당신 만 활성 결과를 중포 기지를 조회 할 수 있습니다. 자바 스크립트에서

예 : 쿼리에 대한

var date = new Date(); 
var currentTime = date.getTime(); 
var ref = firebase.database().ref("events"); 
var result = ref.orderByChild("endtime").startAt(currentTime); 

중포 기지 문서 : https://firebase.google.com/docs/reference/js/firebase.database.Query#startAt

당신이 언급 한 바와 같이, 데이터베이스를 정리에 관해서, 중포 기지 내에서 자동으로 할 수있는 방법이 없다 (같은 지금까지 알고 있듯이) 데이터베이스를 수동으로 정리하지 않으려면이 작업을 수행하기 위해 외부 서비스를 작성하는 것이 좋습니다.

+0

쿼리는 응용 프로그램의 문제를 해결하지만 문제는 데이터베이스 수준에서이를 강제하는 것입니다. 데이터를 데이터베이스 레벨에 숨기거나 질의에 의존하지 않으면 누구나 수동으로 Firebase API를 쿼리하여보고 싶지 않은 이벤트를 볼 수 있습니다. –

+0

물론, 내 애플 리케이션과 동일한 문제에 직면. 유일한 방법은 동일한 Firebase 데이터베이스에 연결되고 모든 로직을 수행하는 앱용 백엔드를 추가하는 것입니다. 따라서 데이터베이스에 바인드하여 주기적으로 타임 스탬프를 확인하고 목록 간의 이벤트를 이동할 수 있습니다. –

+0

@ AhmetErenBaşak '누구나'귀하의 데이터를 어떻게 쿼리합니까? [규칙] (https://firebase.google.com/docs/database/security/)을 설정하면 해당 기준을 충족하는 사용자 만 데이터에 액세스 할 수 있습니다. – Jay

관련 문제