使用 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);
});
我目前正在与 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);
});