2017-05-12 5 views
0

私はnodejsを初めて使用していますが、rssパーサーを実行しようとしています。ランダムnullのプロパティを読み取ることができません

私はmongooseをストア記事に使用し、rss-parserをxml to jsonに変換します。

私には分かりませんが、「ランダムではなくnullのプロパティをランダムに読み取れません」というエラーがあります。いくつかのコードは動作し、いくつかの場合は動作しません。

/* lib require */ 
var parser = require('rss-parser'); 

var mongoose = require('mongoose'); 

/* Mongodb connection*/ 

mongoose.Promise = global.Promise; 
mongoose.connect('mongodb://localhost/rss', function(err) { 
    if (err) { throw err; } 
}); 

/* Schema for mongoose */ 
var articleSchema = new mongoose.Schema({ 
    title : String, 
    pubDate : String, 
    category: String, 
    date : { type : Date, default : Date.now } 
}); 

var articleModel = mongoose.model('articles', articleSchema); 

/* Array of rss to check */ 
var rssurl = []; 

rssurl.push({url: "URL", 
webhook: "LINK";, 
category : "CATEGORY"}); 

rssurl.push({url: "URL", 
webhook: "LINK", 
category: "CATEGORY"}); 



/* For each feed, I check if the article exist */ 

rssurl.forEach(function(item) { 
    parser.parseURL(item.url, function(err, parsed) { 
     parsed.feed.entries.forEach(function(entry) { 
      articleModel.find().count(function(err, count){ 
       if (count <= 0) { 
        console.log("check"); 
       } 
      }) 
     }) 
    }) 
}) 

編集:これはエラーです:

TypeError: Cannot read property 'feed' of null

at ~/node_modules/rss-parser/index.js:192:15

答えて

0

マングースは、あなたの接続が成功する前にモデリングを開始することができます。それは実際に仕事をしていないので、 はどちらの接続は、後でまたは接続が遅いですが失敗している:あなたは、エラーが唯一の私の疑惑は、2つのいずれかで、時々起こることを言うので

あなたはデータを照会するまでに欲しいと思っています。

どちらの場合も、あなたは、接続が成功した後まで、あなたの仕事を遅らせる試みることができる:

mongoose.Promise = global.Promise; 
mongoose.connect('mongodb://localhost/rss').then(() => { 
    var articleModel = mongoose.model('articles', articleSchema); 
    ... 
}, (err) => { 
    console.log("failure connecting"); 
    throw err 
}); 

コードが常に成功すると、その後、私はそれがデータベースに接続してから結果を照会間の競合状態だ疑いそれ。エラー状態になった場合、最初に接続している問題があることがわかります。

+0

ありがとう、申し訳ありませんが、私はエラーを忠告するのを忘れていました。「TypeError:nullのプロパティ 'feed'を読み取れません。あなたの答えはこれのために働くでしょうか? – irshlisht44

+0

その場合、おそらく 'parseURL'が失敗しました。あなたはparser.parseURL(item.url、function(err、parsed))で 'err'の値を出力できますか... – AnilRedshift

+0

それは何も印刷しません、私は直接エラーがあります – irshlisht44

関連する問題