2014-03-12 1 views
2

향후 이벤트에 대한 알림을 생성해야합니다. 예를 들어 알리미와 비슷합니다. 나는 서버 타임 스탬프 + 미래 시간을 키로 사용할 수 있고 현재 서버 시간보다 오래된 타임 스탬프가있는 알림 만 팝핑 할 수 있다고 생각했다. 그러나 나는 서버 시간이 필요하다. 클라이언트 측 타임 스탬프가 동기화되지 않았으므로 사용할 수 없습니다.미래의 타임 스탬프를 파이어베이스의 키로 사용

firebase에서 현재 타임 스탬프를 가져 오는 방법이 있습니까?

서버 측에서 교체되는 타임 스탬프에 대한 자리 표시자가 있다는 것을 알고 있습니다. 이것을 키로 사용해도 될까요? 자리 표시자가 실제 타임 스탬프로 바뀌면이 이벤트를들을 수있는 방법이 없을 수도 있습니다.

일반적으로이 문제를 해결하는 데 유용한 방법이 있습니까?

답변

1

아마도 여기서는 the X/Y problem을 해결할 것이므로 사용 사례를 설명하고 전반적인 해결책을 얻는 것이 더 나을 것입니다. 클라이언트에서 사용할 서버 타임 스탬프를 가져 오는 것은 개념적 문제 일 가능성이 매우 높습니다. 다만,

var ref = new Firebase(URL); 
ref.on('child_added', function(snap) { 
    // client just listens on path, records have serve timestamp when they arrive 
    console.log('the last event was added at', snap.val().time); 
}); 
ref.push({ name: 'Kato', time: Firebase.ServerValue.TIMESTAMP }); 

당신이 미래의 사건을 대기하는 경우 : 내 목표는 메시지에서 시간을 표시하는 단지의 경우

예를 들어, 나는 간단한 전화 설정, 경로를 모니터링하고, 반환 무엇을 표시 할 수 있습니다 다른 경로에 저장하고 준비가되면 "현재"경로로 이동하십시오. "지금"을 가져오고 나중에 삽입하려고하는 것이 아닙니다. 답에 대한

new Firebase(URL).transaction(function(currValue) { 
    return Firebase.ServerValue.TIMESTAMP; 
}, function(err, success, snap) { 
    console.log('the current server timestamp', snap.val()); 
}); 
+0

감사 : 당신은 타임 스탬프를 가져 오는에 설정되어있는 경우

, 가장 간단한 방법은 더미 경로를 설정하고에 대한 값을 설정하는 것입니다. 더미 참조를 설정하는 것은 클라이언트가 온라인 상태가되었을 때 한 번만 fb에서 타임 스탬프를 얻는 작은 차이를 가지고 현재 수행하고있는 작업입니다. 그러나 그것은 여전히 ​​같은 원리입니다. 귀하의 첫 번째 솔루션은 명시적인 사용자 조치가 필요하므로 제 경우에는 작동하지 않습니다. 만기일은 사용자 조치가 아니므로 청취 할 이벤트가 없습니다. 나는 이것이 firebase 사용에 대한 무역이라고 생각합니다. – webduvet

관련 문제