Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用由MongoDB支持的ExpressJS创建的博客不显示来自DB的帖子_Mongodb_Express_Pug - Fatal编程技术网

使用由MongoDB支持的ExpressJS创建的博客不显示来自DB的帖子

使用由MongoDB支持的ExpressJS创建的博客不显示来自DB的帖子,mongodb,express,pug,Mongodb,Express,Pug,我用ExpressJS和MongoDB创建了一个非常简单的博客web应用程序。但是索引页面不会呈现我输入到数据库中的“blogpost”。它只显示标题为“BL的博客”,下面没有任何帖子 为什么这些帖子没有显示出来 app.js: //模块依赖项 var express=需要(“express”); 变量路由=需要('./路由'); var user=require('./路由/用户'); var http=require('http'); var path=require('path'); //

我用ExpressJS和MongoDB创建了一个非常简单的博客web应用程序。但是索引页面不会呈现我输入到数据库中的“blogpost”。它只显示标题为“BL的博客”,下面没有任何帖子

为什么这些帖子没有显示出来

app.js:

//模块依赖项
var express=需要(“express”);
变量路由=需要('./路由');
var user=require('./路由/用户');
var http=require('http');
var path=require('path');
//蒙哥达
var mongo=require('mongodb');
var monk=require('monk');
var db=monk('localhost:27017/hello express/');
var-app=express();
//所有环境
应用程序集('port',process.env.port | | 3000);
app.set('views','u dirname+'/views');
应用程序集(“查看引擎”、“翡翠”);
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
应用程序使用(应用程序路由器);
app.use(express.static(path.join(uu dirname,'public'));
//仅限开发
if('development'==app.get('env')){
app.use(express.errorHandler());
}
//得到
app.get('/',routes.index(db));
app.get('/users',user.list);
app.get('/userlist',routes.userlist(db));
app.get('/newuser',routes.newuser);
//职位
app.post('/adduser',routes.adduser(db));
http.createServer(app.listen)(app.get('port'),function(){
console.log('Express server监听端口'+app.get('port'));
});
routes/index.js(我只包括exports.index,因为它是解决此问题的相关路径):

exports.index=函数(db){
返回函数(req、res){
var posts=db.get('blogPosts');
find({},{},函数(e,docs){
res.render('索引'{
“索引”:文档
});
});
};
};
views/index.jade:

扩展布局
块内容
h1。
BL的博客
保险商实验室
-索引中的每个帖子
锂
h3=职位头衔
p=后期内容

好的,多亏了WiredPairie的帮助,现在我已经找到了我自己问题的答案

第一个问题是我正在使用的数据库的名称。因此,在我的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页面。这是由于语法错误(我知道,我是新手。)


通过使用
{}
而不是
=
,页面能够正确呈现。我仍然不知道为什么会这样,但至少现在它解决了我的问题

调用
find
是否返回数据?您应该能够进一步缩小问题的范围。@WiredPairie如果您指的是mongo控制台,当我运行db.blogPosts.find()时,它会从
index
函数中返回我先前输入的数据。不,不是MongoDB控制台。可能只是添加
console.log(docs)
@wiredparie我添加了它,但控制台没有返回任何内容。当我试图在chrome的Javascript控制台中访问文档时,文档是未定义的…@xbili
e
不存在可忽略的内容;)
extends layout

block content
    h1.
        BL's Blog
    ul
        - each post in index
            li
                h3 #{post.title}
                p #{post.content}