我用ExpressJS和MongoDB创建了一个非常简单的博客网络应用程序。但索引页面不会呈现我输入数据库的'blogPosts'。它只显示标题为“BL的博客”,下面没有任何帖子。
为什么不显示帖子?
app.js:
//Module dependencies
var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
//Mongodb
var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/hello-express/');
var app = express();
// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));
// development only
if ('development' == app.get('env')) {
app.use(express.errorHandler());
}
//GET
app.get('/', routes.index(db));
app.get('/users', user.list);
app.get('/userlist', routes.userlist(db));
app.get('/newuser', routes.newuser);
//POST
app.post('/adduser', routes.adduser(db));
http.createServer(app).listen(app.get('port'), function(){
console.log('Express server listening on port ' + app.get('port'));
});
routes / index.js(我只包含了exports.index,因为这是解决这个问题的相关途径):
exports.index = function(db) {
return function(req, res) {
var posts = db.get('blogPosts');
posts.find({}, {}, function(e, docs) {
res.render('index', {
"index": docs
});
});
};
};
视图/ index.jade:
extends layout
block content
h1.
BL's Blog
ul
- each post in index
li
h3 = post.title
p = post.content
答案 0 :(得分:0)
好的,现在我已经找到了自己问题的答案,感谢 WiredPrairie 的帮助。
第一个问题在于我正在使用的数据库名称。因此,在我的index.js中,应该是:
exports.index = function(db) {
return function(req, res) {
var posts = db.get('hello-express'); //Here's the difference.
posts.find({}, {}, function(e, docs) {
res.render('index', {
"index": docs
});
});
};
};
我在app.js中列出了我正在使用名为'hello-express'的数据库,下面这行:
var db = monk('localhost:27017/hello-express/');
因此,正在使用的数据库名称应命名为“hello-express”。
但是,即使这样做,我也无法正确呈现Jade页面。这是由于语法错误(我知道,我是新的。)
extends layout
block content
h1.
BL's Blog
ul
- each post in index
li
h3 #{post.title}
p #{post.content}
使用#{<var>}
代替=
,页面能够正常呈现。我仍然不知道为什么会这样,但至少它现在解决了我的问题。