Random无法读取null属性

时间:2017-05-12 16:18:50

标签: javascript json node.js rss

我是nodejs的新手,我正在尝试使用rss解析器。

我将mongoose用于商店文章,使用rss-parser将xml转换为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:无法读取null

的属性'feed'      

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

1 个答案:

答案 0 :(得分:0)

Mongoose允许您在连接成功之前开始建模。

既然你说错误只是偶尔发生,我怀疑是两件事之一: 如果连接稍后失败,连接速度很慢,那么在查询数据时它实际上并没有完成您想要的工作。

在任何一种情况下,您都可以尝试延迟工作,直到连接成功为止:

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

如果代码总是成功,那么我怀疑它是连接数据库和查询结果之间的竞争条件。如果您遇到错误情况,那么您将首先知道连接存在问题。