2016-06-24 8 views
0

RSSフィードからデータを取得し、Firebaseのデータベースに構造化日付として追加しています。 RSSフィードがリフレッシュされるたびに、新しいUIDが追加されますが、同じ値が追加されるという問題があります。言い換えれば:Firebaseデータベースで重複をスキップ

enter image description here

例えば、値をかどうかを確認する方法はあります更新: "すべて表示されているFish .."は既に存在していて、新しいUID全体を追加する代わりにスキップしますか?

私はRSS解析用feedparser(Node.jsの)を使用していますと、これはすべてのリフレッシュに重複が生じコードです:

feedparser.on('readable', function() { 
    // This is where the action is! 

    var stream = this 
    , meta = this.meta // **NOTE** the "meta" is always available in the context of the feedparser instance 
    , item; 

    while (item = stream.read()) { 

     console.log(item); 


var pubDate = item.pubDate; 
    var date = new Date(pubDate); 
    var description = item.description; 

var parts = description.split(' - ', 2); 

var time = parts[0]; 
var update = parts[1]; 


    // date.setTimezone 
    // var time = date.getHours()+":"+date.getMinutes(); 


     var monthNames = ["January", "February", "March", "April", "May", "June", 
    "July", "August", "September", "October", "November", "December" 
         ]; 

     var month = monthNames[date.getMonth()]+" "+date.getDate(); 

     var postData = { 
     time: time, 
     date: month, 
     update: update, 
     description: description, 
     day: pubDate 

    }; 


var newPostKey = firebase.database().ref().child('feed').push().key; 
    var updates = {}; 
    updates['/feed/' + month + '/' + newPostKey] = postData; 
    return firebase.database().ref().update(updates); 
+0

特定の値が一意であることを保証したいと思うようです:http://stackoverflow.com/questions/25294478/how-do-you-prevent-duplicate-user-properties-in-firebase –

答えて

0

ここソリューションは、私が思うに、解析された飼料を使用することですデータを使用して、一意の識別子を取得し、プッシュを使用する代わりにFirebaseデータベースキーとして使用します。

firebase.database().ref('feed') 
    .child(month).child(postData.guid) 
    .update(updates); 

その方法をあなたはそう長く​​があるのと同じアイテムを複数回フェッチた場合、:あなたが何かを行うことができるかもしれないので、例えば、多くのRSSフィードは、一意のポストを特定​​値を持っています常に同じ場所で更新されます。

+0

私は '私はこれを考えなかったと信じています!ありがとうございます! – HalesEnchanted

関連する問題