我正在用jade构建一个nodejs,express,mongodb博客。
我的文件夹结构是:project/modules/views/index.jade app.js articleprovider-memory.js articleprovider-mongodb.js
当我通过控制台运行 node app.js 并转到本地主机端口时,我得到了 TypeError:
无法在jade.debug.unshift.lineno 处读取未定义的属性“长度”...
在浏览器中。可能指的是匿名函数。
这是 Articleprovider-memory.js
ArticleProvider.prototype.save = function(articles, callback) {
var article = null;
if( typeof(articles.length)=="undefined")
articles = [articles];
for( var i =0;i< articles.length;i++ ) {
article = articles[i];
article._id = articleCounter++;
article.created_at = new Date();
this.dummyData[this.dummyData.length]= article;
}
callback(null, articles);
};
/* Lets bootstrap with dummy data */
new ArticleProvider().save([
{title: 'Post one', body: 'Body one', comments:[{author:'Bob', comment:'I love it'}, {author:'Dave', comment:'This is rubbish!'}]},
{title: 'Post two', body: 'Body two'},
{title: 'Post three', body: 'Body three'}
], function(error, articles){});
exports.ArticleProvider = ArticleProvider;
articleprovider-mongodb.js
ArticleProvider = function(host, port) {
this.db= new Db('node-mongo-blog', new Server(host, port, {auto_reconnect: true}, {}));
this.db.open(function(){});
};
ArticleProvider.prototype.save = function(articles, callback) {
this.getCollection(function(error, article_collection) {
if( error ) callback(error)
else {
if( typeof(articles.length)=="undefined")
articles = [articles];
for( var i =0;i< articles.length;i++ ) {
article = articles[i];
article.created_at = new Date();
}
article_collection.insert(articles, function() {
callback(null, articles);
});
}
});
};
exports.ArticleProvider = ArticleProvider;
这是我的路线:
var articleProvider = new ArticleProvider('localhost', 27017);
app.get('/', function(req, res){
articleProvider.findAll( function(error,docs){
res.render('index.jade', {title: 'Blog', articles:docs});
})
res.render('index.jade')
});
然后是 index.jade 文件
// extends layout
block content
h1= title
#articles
- each article in articles
div.article
div.created_at= article.created_at
div.title
a(href="/blog/"+article._id.toHexString())!= article.title
div.body= article.body
我已经阅读了很多关于所有依赖项的内容,但对它们仍然很陌生。据我所知,这些都可能是问题所在,如果我是对的,请告诉我详细的补救措施。
我的 index.jade 代码不正确
index.jade 指的是一个数组,而我的文章对象不是一个数组
mongodb 没有与应用程序建立正确的连接
我需要使用和尚,但我不是
我的一些代码来自这篇文章 http://howtonode.org/express-mongodb
先感谢您