我一直在关注this tutorial试图让mongodb node.js,express和jade一起工作,但是我不能让我的生活让程序访问来自数据库。Node.js连接到一个mongodb
这里是应该访问数据库的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代码:它的目的是纯粹弄清楚用户列表的内容。它应该包含数据库中的信息(其中有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
我不知道确切原因,因为我做了很多的测试,以确保这是现在的工作我发送了正确的数据,其中包括从教程中复制和粘贴代码,但现在它可以工作!
编辑:我通过确认它实际上是从服务器拉取数据更接近的解决方案,只是测试它与本教程验证,我应该使用的代码,它现在正常工作。增加了正确的代码
看起来您正在重新编制数据库中的三个值。你需要'JSON.stringify'它们。 (或类似的) – user949300 2014-11-06 23:39:29
本教程的+1。 – shmuli 2014-11-06 23:46:26
好吧,我用JSON.stringify,我可以确认它将所有数据从数据库中提取出来,但我仍然没有得到它来正确显示它,但没有错误消息。我对我的代码进行编辑 – bs7280 2014-11-06 23:48:10