跳过Firebase数据库中的重复项

时间:2016-06-24 03:37:31

标签: node.js firebase firebase-realtime-database

我正在从RSS Feed中检索数据,并在Firebase的数据库中添加结构化日期。每次刷新RSS源时,都会添加一个新的UID,但问题是它添加了相同的值。换句话说:

enter image description here

有没有办法检查一个值,例如更新:“鱼显示所有..”已经存在并跳过而不是添加一个全新的UID?

我正在使用feedparser(node.js)进行rss解析,这是每次刷新时导致重复的代码:

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);

1 个答案:

答案 0 :(得分:0)

我认为,此处的解决方案是使用已解析的Feed数据来获取某种唯一标识符,并将其用作Firebase数据库密钥,而不是使用push。例如,许多RSS源具有唯一标识帖子的guid值,因此您可以执行以下操作:

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

这样,如果你多次获取相同的项目,只要guid相同,它就会一直就地更新。