【发布时间】:2012-02-12 20:00:53
【问题描述】:
我想从 mongodb 中提取数据并将其传递给视图。一切似乎都有效,但我没有看到所有 10000 条记录,我只看到一条。感觉已经很接近解决了,但是卡住了……我正在使用node-mongodb-native、express和dot.js来实现我的目标。
这是我的 app.js,查找所有操作所在的 app.get():
/**
* Mongo DB
*/
var mongodb = require('mongodb'),
serverdb = new mongodb.Server('127.0.0.1', 27017, {}),
dbName = new mongodb.Db('test', serverdb, {});
/**
* Module dependencies.
*/
var express = require('express'),
doT = require('doT'),
app = express.createServer(),
pub = __dirname + '/public',
view = __dirname + '/views';
// Configuration
app.configure(function(){
app.set('views', view);
app.set('view options', {layout: false});
app.set('view engine', 'html');
app.use(app.router);
});
//Simple templating
app.register('.html',doT, {
compile: function(str, opts){
return function(locals){
return str;
}
}
});
//----------------- This is where the problem is i think ---------------
app.get('/', function(req, res){
dbName.open(function (error, client) {
var collection = new mongodb.Collection(client, 'personnel');
collection.find().each(function(err, data){
//Error check
if (err){return res.end('error!'+err);}
//Data
if (data){
res.render('index.html',{data:data._id});
} else {
res.end();
}
});
});
});
//--------------------------------------------------------------
app.configure('production', function(){
app.use(express.errorHandler());
});
app.listen(3000);
console.log('Express server listening on port %d in %s mode', app.address().port, app.settings.env);
这是我的html:
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'>
<title>Index</title>
</head>
<body>
{{=it.data}}
</body>
</html>
如果可以,请提供帮助。谢谢。
【问题讨论】:
标签: javascript node.js mongodb express template-engine