通过 NodeJS 和 Express 将 MySQL 查询的所有内容检索到 Jade 模板引擎
Posted
技术标签:
【中文标题】通过 NodeJS 和 Express 将 MySQL 查询的所有内容检索到 Jade 模板引擎【英文标题】:Retrieving all the content of a MySQL query to Jade template engine through NodeJS and Express 【发布时间】:2011-10-18 09:40:57 【问题描述】:简单的新手问题,我是从 nodejs 开始的,而且我对后端语言很陌生。
我设法使用 express-js 中的默认玉引擎将单个字段从数据库发布到网页。
/**
* 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 检索到的所有元素的列表?
谢谢你:)
【问题讨论】:
【参考方案1】:将完整结果传递给 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
-
【讨论】:
这段代码并不完全有效,但让我走上了正确的道路!【参考方案2】:更好
ul
- each result in results
li= result.text
【讨论】:
【参考方案3】:感谢generalhenry,我找到了办法。
基本上我不需要在服务端js中的mysql get函数或者查询函数中添加其他东西。
这都是关于玉引擎的,这段代码有效:将您从 get 函数(在本例中为结果)传递的变量作为输入,并遍历它,选择我想要的字段。
h1 Hello there!
p Welcome to this try
- for( var i = 0; i < results.length; i++ )
- var textbody = results[i]
p= textbody['text']
-
希望将来可以帮助其他人:)
【讨论】:
【参考方案4】:像这样。结果是一个数组,所以你必须循环它
for (var i in results)
var sqlResult = results[i];
console.log(sqlResult['text'], sqlResult['title']);
【讨论】:
在控制台中工作,但问题是我仍然无法将这个数组带到前端/Jade 引擎。以上是关于通过 NodeJS 和 Express 将 MySQL 查询的所有内容检索到 Jade 模板引擎的主要内容,如果未能解决你的问题,请参考以下文章
使用 Nodejs、Express、Mongoose 和 React 将图像上传到 MongoDB
node.js用express怎么查询到MongoDB数据库列表
Express 和 Nodejs:调用外部 API 的最佳方式
我想通过 NodeJS Express 应用程序将 Azure blob 存储与 Angular 应用程序连接起来