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

Show database content in browser with node.js, MySQL and Jade

我目前正在与 Node.js、Express.js 和 Jade 合作。我的数据库是 MySQL。我是 node.js 的新手,所以我想尝试一些非常简单的事情:在浏览器的 table 中显示数据库中的一些数据。 不幸的是它仍然不起作用。我可以在空闲端口上显示数据,但不能在我需要的地方显示数据 - 在端口 3000 上。而且我也无法处理响应本身。这是我的 "solutions" 或想法之一。也许异步调用有问题?我根本不知道。

这是我的代码:

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;

models/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();

models/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" 等。我尝试在 rooms.js 中插入 console.logs,但这似乎不起作用。 我还认为我可以将响应保存到一个变量中,以便我可以在其他地方使用它。

感谢您的每一次帮助和提示! 史蒂菲

应该这样做:

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, ...

是如何将它配置到特定端口(在本例中为 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);

});