在浏览器中使用node.js,MySQL和Jade显示数据库内容

我目前正在使用Node.js,Express.js和Jade。 我的数据库是MySQL。 我是新来的node.js,所以我想我尝试了一些非常简单的方法:在浏览器的表格中显示数据库中的一些数据。 不幸的是它仍然不起作用。 我可以在一个自由端口上显示数据,但不能在我需要的端口上 – 在端口3000上。而且我也无法使用响应本身。 这是我的“解决scheme”或想法之一。 也许有asynchronous调用的问题? 我根本不知道。

这是我的代码:

routes.js

var express = require('express'); var controller = express.Router(); var dataModel2 = require('../models/rooms'); controller.get('/rooms', function(req, res, next) { var rooms = dataModel2(); res.render('rooms', { items: rooms }); }); module.exports = controller; 

车型/ rooms.js

 var rooms; var connection = require('./databaseConnection'); var http = require('http'); rooms = function() { http.createServer(function (request, response) { console.log('Creating the http server'); connection.query('SELECT * FROM rooms', function(err, rows, fields) { response.writeHead(200, { 'Content-Type': 'application/json'}); var room = response.end(JSON.stringify(rows)); return room; }); }); module.exports = rooms(); 

车型/ databaseConnection.js

 var mysql = require('mysql'); module.exports = mysql.createConnection({ host : 'localhost', user : 'root', password : '', database : 'raspi_key_royal' }); 

rooms.jade

 extends layout block content div(id="bodyRoyal") table(border='1') thead tr th ID th Name tbody each item in items tr td=item.rid td=item.name 

因为还有其他一些部分,比如“persons”等等,所以我把这些function分开了。我尝试在room.js中插入console.logs,但是这似乎不起作用。 我还认为我可以将响应保存到variables中,以便我可以在其他地方使用它。

谢谢你的帮助和提示! 斯特芬

像这样的东西应该这样做:

 var express = require('express'), app = express(), connection = require('./databaseConnection'); app.get('/rooms', function (req, res) { connection.query('SELECT * FROM rooms', function(err, rows, fields) { res.render('rooms', { items: rows }); }); }); var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); }); 

这是从快递网站… http://expressjs.com/starter/hello-world.html

 app.listen(3000, ... 

是如何configuration它到一个特定的端口(在这种情况下是3000)。

 var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); }); var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port; console.log('Example app listening at http://%s:%s', host, port); });