2012-12-24 29 views
4

某人如何创建指向Firebase数据的临时网址,但是数据(和网址)在特定时间后即5分钟或15分钟后会被销毁?使用Firebase过期网址

+1

有在火力地堡数据没有过期。您可以轻松创建一些过程,即在给定时间段后简单地删除数据。要安全地做到这一点,需要该进程在某种服务器上运行。 –

+0

@FrankvanPuffelen这听起来像个好主意。你能解释一种方法来轻松解决这个问题吗? – nodebase

+1

如何在可能过期的每一条数据中添加时间戳?然后,在您自己的服务器上运行定期检查**或**将时间戳记保存在专门的客户端中,只需从服务器上删除时间到。 –

回答

5

根据数据的存储方式,有几种不同的选项可以通过时间戳删除数据。

假设数据是无序的,你所储存的时间戳字段中的每个记录,那么你可以简单地开始从第一条记录阅读和删除它们,直到你找到你想保留一个:

<script> 
var FB = new Firebase(YOUR_URL); 
var childRef = FB.child(TABLE_WITH_RECORDS_TO_DELETE); 
var oneWeekAgo = new Date().getTime()-1000*60*60*24*7; // one week ago 

var fx = function(snapshot) { // keep a ref to this so we can call off later 
    var v = snapshot.val(); 
    if(v.expires_on_date < oneWeekAgo) { 
     // delete the record 
     snapshot.ref().remove(); 
    } 
    else { 
     // we found the first keeper, so we are done 
     childRef.off('child_added', fx); 
    } 
} 

// fetched records and test to see how old they are 
childRef.on('childAdded', fx); 
</script> 

如果数据按时间戳排序,你可以检索和删除它们如下:

var FB = new Firebase(YOUR_URL); 
var childRef = FB.child(TABLE_WITH_RECORDS_TO_DELETE); 
var oneWeekAgoMinusOne = new Date().getTime()-1000*60*60*24*7-1; // one week ago 

// fetched using endAt, so only retrieving older than 1 week 
childRef.endAt(oneWeekAgoMinusOne).on('childAdded', function(snapshot) { 
    // delete the record 
    snapshot.ref().remove(); 
}); 
+0

现在总是使用第二种方法。如果需要,使用.sort()功能。 –