Node.js连接到一个mongodb

我一直在关注这个教程 ,试图让mongodb node.js,express和jade一起工作,但是我不能让我的程序从数据库访问任何信息。

这里是应该访问数据库的app.js中的代码。

var mongo = require('mongodb'); var monk = require('monk'); var db = monk('localhost:27017/nodetest1'); ....a few lines down.... app.use(function(req,res,next){ req.db = db; next(); }); 

这里是处理路由的代码:

 /* GET Userlist page. */ router.get('/userlist', function(req, res) { var db = req.db; var collection = db.get('usercollection'); collection.find({},{},function(e,docs){ res.render('userlist', { "userlist" : docs }); }); }); 

这里是userlist.jade中的代码:它被devise为纯粹地弄清楚用户列表的内容是什么。 它应该包含数据库中的信息(其中有3个条目,每个数据有2个数据)。 我从网上的例子中得到了其他的玉代码,它本质上就是一个'Hello World'程序。

 doctype html html(lang="en") head title= pageTitle body #{userlist} 

该页面输出到这个:

 <[object Object],[object Object],[object Object]> 

这就解释了为什么我在循环访问数据时遇到了错误, 但是我需要帮助的是让程序从数据库中获取正确的信息。

额外的信息:我可以通过命令提示符访问数据库,并查看我把它的数据。 我正在使用Windows 8.1

更新:代码,使其工作!

index.js(路由处理程序):

 /* GET Userlist page. */ router.get('/userlist', function(req, res) { var db = req.db; var collection = db.get('usercollection'); collection.find({},{},function(e,docs){ res.render('userlist', { "userlist" : docs }); }); }); 

userlist.jade

 extends layout block content h1. User List ul each user, i in userlist li a(href="mailto:#{user.email}")= user.username 

我不确定为什么这是现在的工作,因为我做了很多testing,以确保我发送了正确的数据,其中包括从教程中复制和粘贴代码,但现在它的作品!

编辑:我更接近的解决scheme,确认它实际上是从服务器拉数据,只是testing它,并validation与教程代码我应该使用,它现在正常运行。 添加了正确的代码

我相信你得到这个输出,因为在callback文档是一个数组。 你可以通过文档循环,并打印单个文件到控制台? 这将validation数据访问部分是否正常工作,然后您可以计算出HTML输出。