【发布时间】:2014-07-19 12:20:08
【问题描述】:
我刚刚开始学习 Node 和 Express,我对 express 中的路由有一些疑问。我想要一个用于路由的模块化代码。我想从mysql数据库中查询一些数据:
这是我的 app.js(它在“public_html”目录中):
var path = require('path');
var express = require('express');
var routes = require('./routes');
var app = express();
var staticPath = path.resolve(__dirname, './');
app.use(express.static(staticPath));
routes.init(app);
module.exports = app;
app.listen(3000, function() {
console.log('Server is listening on port: 3000');
});
下一个文件:“public_html/routes/index.js”:
exports.init = function(app){
//electronics routes
app.use('/laptop', require('./laptop'));
};
“public_html/routes/laptop/index.js”:
var router = require('express').Router();
router.get('/laptop', require('./modules/laptop'));
module.exports = router;
“public_html/routes/laptop/modules/laptop.js”:
var mysql = require('mysql');
var connection = mysql.createConnection(
{
host : 'localhost',
user : 'admin',
password : 'xxxxxxx',
database : 'database',
}
);
module.exports = function(req, res){
connection.connect();
var queryString = 'SELECT * FROM laptop';
connection.query(queryString, function(err, rows, fields) {
if (err) throw err;
res.writeHead(200, { 'Content-Type': 'application/json'});
res.end(JSON.stringify(rows));
});
connection.end();
};
我想保持这种模块化,即使它看起来有点过于复杂,将来我会需要它。 所以问题是它不起作用,我认为它只是某个地方的一个愚蠢的错误,但我没有找到它,并且在互联网上只有简单的路线示例,所以我不能在这种情况下使用它们。
【问题讨论】:
-
这无关紧要,但你为什么要公开你的服务器代码供所有人查看(你将
express.static()设置为包含你的代码的目录)?public_html通常只为客户端 html/js/css/类似资产保留。 -
另外,您还尝试在
laptop.js中结束响应两次。 -
是的,我知道,我在很多例子中看到了你在说什么。我也会修复它,但无论如何感谢评论。
标签: javascript mysql node.js express