简单的新手问题,我开始使用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查询检索的所有元素的列表?
谢谢:)
答案 0 :(得分:7)
将完整结果传递给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
- }
答案 1 :(得分:4)
更好
ul
- each result in results
li= result.text
答案 2 :(得分:2)
感谢通才,我找到了一条路。
基本上我不需要在mysql get函数或服务器js中的查询函数中添加其他东西。
这是关于jade引擎的,这段代码可以工作:将你从get函数传递的变量(在这种情况下是结果)作为输入,然后通过它迭代,选择我想要的字段。
h1 Hello there!
p Welcome to this try
- for( var i = 0; i < results.length; i++ ) {
- var textbody = results[i]
p= textbody['text']
- }
希望未来可能会帮助其他人:)
答案 3 :(得分:1)
喜欢这个。结果是一个数组,所以你必须循环它
for (var i in results){
var sqlResult = results[i];
console.log(sqlResult['text'], sqlResult['title']);
}