显示来自 mongodb 的所有数据并在 doT.js 模板引擎中渲染它

2024-05-11

我想从 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>

如果可以的话请帮忙。谢谢。


我对 dot.js 模板引擎一无所知。但我猜你的电话是res.render('index.html',{data:data._id});导致页面针对光标中的每个元素重新呈现,并且最终呈现页面的最后一次呈现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

显示来自 mongodb 的所有数据并在 doT.js 模板引擎中渲染它 的相关文章

随机推荐