通过NodeJS和Express检索MySQL查询的所有内容到Jade模板引擎
简单的新手问题,我开始与nodejs,一般来说,我是后端语言的新手。
我设法使用express-js中的默认jade引擎将一个字段从数据库发布到网页。
/** * Module dependencies. */ var express = require('express'); var app = module.exports = express.createServer(); var sqlResult; //MySql var mysqlClient = require('mysql').Client, newClient = new mysqlClient(), Database = 'test', Table = 'test_table'; newClient.user ='root'; newClient.password='password'; newClient.connect(console.log('connected to the database.')); newClient.query('USE '+Database); newClient.query( 'SELECT * FROM '+Table, function selectCb(err, results, fields) { if (err) { throw err; } sqlResult = results[0]; console.log(sqlResult['text'], sqlResult['title']); } ); // Configuration app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.cookieParser()); app.use(express.session({ secret: 'your secret here' })); app.use(app.router); app.use(express.static(__dirname + '/public')); }); app.configure('development', function(){ app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); }); app.configure('production', function(){ app.use(express.errorHandler()); }); // Routes app.get('/', function(req, res){ res.render('index', { title: sqlResult['title'] }); }); app.listen(3000); console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);
我的问题是,我怎样才能显示由MySQL Query检索的所有元素的列表?
谢谢 :)
喜欢这个。 结果是一个数组,所以你必须循环它
for (var i in results){ var sqlResult = results[i]; console.log(sqlResult['text'], sqlResult['title']); }
将完整的结果传递给Jade
app.get('/', function(req, res){ newClient.query('USE '+Database); newClient.query('SELECT * FROM '+Table, function selectCb(err, results, fields) { if (err) { throw err; } res.render('index', { title: results[0].title, results: results }); } });
然后在你的Jade里迭代它们
- for( var i = 0, len = results.length; i < len; i++ ) { .result .field1= results[i].field1 .field2= results[i].field2 - }
甚至更好
ul - each result in results li= result.text
感谢generalhenry,我find了一个方法。
基本上我不需要添加其他的东西到MySQL的get函数或服务器js的查询function。
这一切都是关于翡翠引擎,这个代码的工作原理是:从get函数(在这种情况下,结果)中传递variables,并迭代它,select我想要的字段。
h1 Hello there! p Welcome to this try - for( var i = 0; i < results.length; i++ ) { - var textbody = results[i] p= textbody['text'] - }
希望可以帮助别人在未来:)