Node.js连接到mongodb

时间:2014-11-06 23:21:00

标签: javascript node.js mongodb express

我一直在关注this tutorial尝试让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中的代码:它旨在纯粹弄清楚用户列表的内容是什么。它应该包含数据库中的信息(其中有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

我不确定为什么它现在正在运行,因为我做了很多测试以确保我发送了正确的数据,其中包括复制和粘贴教程中的代码,但现在可以正常工作了!

编辑:我更接近解决方案,确认它实际上是从服务器提取数据,只是测试它并在教程中验证我应该使用的代码,现在它正常运行。添加了正确的代码。

1 个答案:

答案 0 :(得分:1)

我相信你得到的是这个输出,因为回调中的文档是一个数组。你可以循环浏览文档,只需将单个文档打印到控制台吗?这将验证数据访问部分是否正常工作,之后您可以确定HTML输出。