随机 无法读取 null 的属性



我是nodejs的新手,我正在尝试做一个rss解析器。

我使用猫鼬来存储文章,并使用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");
                }
            })
        })
    })
})

编辑:这是错误:

类型错误: 无法读取 null 的属性"feed">

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

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

既然你说错误只是偶尔发生,我的怀疑是两件事之一:要么连接稍后失败,要么连接速度较慢,因此在查询数据时它实际上尚未完成所需的工作。

无论哪种情况,您都可以尝试将工作延迟到连接成功后:

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

如果代码总是成功,那么我怀疑这是连接到数据库和从中查询结果之间的竞争条件。如果您遇到错误条件,那么您首先就会知道连接时出现问题。

最新更新