Node.js mysql在html网站上显示表格
我是新来的node.js,并尝试在HTML网站上显示一个简单的表。 这个表应该填充来自mysqlselect的数据(例如:select * from testtable)。
但是我真的不知道该怎么做。 对于有PHP背景的人,我如何在nodejs的HTML中显示一些sql内容? 我知道git mysql nodejs wiki,但它根本没有帮助,因为这只是获取数据并不显示在网页上。
在nodeJS中做这种事情的最佳做法是什么? 有一个容易理解的方式,还是应该留在PHP? 我真的很喜欢关于node.js的想法,但是开始就像攀登一个滑的悬崖。
我也买了一本关于它的书,但这本书从来没有深入到expression(因为这将是太多的信息..)。 所以我知道快递,帕格,服务静态,我能够服务一个简单的HTML。 但就是这样,没有CRUD或REST,我没有付出50欧元。
编辑:我需要使用一个API或可能使用Angular.js正确的方式吗?
EDIT2:
C:\Users\user\node_test\CRUD2>node app.js module.js:327 throw err; ^ Error: Cannot find module './routes' at Function.Module._resolveFilename (module.js:325:15) at Function.Module._load (module.js:276:25) at Module.require (module.js:353:17) at require (internal/module.js:12:17) at Object.<anonymous> (C:\Users\user\node_test\CRUD2\app.js:2:14) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Function.Module.runMain (module.js:441:10)
EDIT3:
C:\Users\user\node_test\CRUD2>node app.js Express server listening on port 4300 C:\Users\user\node_test\CRUD2\routes\testtable.js:4 var query = connection.query('SELECT * FROM testtable',function(err,rows){ ^ TypeError: Cannot read property 'query' of undefined at C:\Users\user\node_test\CRUD2\routes\testtable.js:4:29 at C:\Users\user\node_test\CRUD2\node_modules\express-myconnection\lib\express-myconnection.js:87:41 at Pool.<anonymous> (C:\Users\user\node_test\CRUD2\node_modules\mysql\lib\Pool.js:47:16) at Handshake.Sequence.end (C:\Users\user\node_test\CRUD2\node_modules\mysql\lib\protocol\sequences\Sequence.js:78:24) at Handshake.ErrorPacket (C:\Users\user\node_test\CRUD2\node_modules\mysql\lib\protocol\sequences\Handshake.js:101:8) at Protocol._parsePacket (C:\Users\user\node_test\CRUD2\node_modules\mysql\lib\protocol\Protocol.js:205:24) at Parser.write (C:\Users\user\node_test\CRUD2\node_modules\mysql\lib\protocol\Parser.js:62:12) at Protocol.write (C:\Users\user\node_test\CRUD2\node_modules\mysql\lib\protocol\Protocol.js:37:16) at Socket.<anonymous> (C:\Users\user\node_test\CRUD2\node_modules\mysql\lib\Connection.js:73:28) at emitOne (events.js:77:13)
这里是一个例子:
app.js
var express = require('express'); var routes = require('./routes'); var http = require('http'); var path = require('path'); //Including controller/dao for testtable var testtable = require('./routes/testtable'); var app = express(); var connection = require('express-myconnection'); var mysql = require('mysql'); // all environments app.set('port', process.env.PORT || 4300); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(express.logger('dev')); app.use(express.json()); app.use(express.urlencoded()); app.use(express.methodOverride()); app.use(express.static(path.join(__dirname, 'public'))); // development only if ('development' == app.get('env')) { app.use(express.errorHandler()); } app.use( connection(mysql,{ host: 'localhost', user: 'your_user', password : 'your_password', port : 3306, //port mysql database:'dbname' },'pool') ); app.get('/testtable', testtable.list); app.use(app.router); http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); });
路线/ testtable.js
exports.list = function(req, res){ req.getConnection(function(err,connection){ var query = connection.query('SELECT * FROM testtable',function(err,rows){ if(err) console.log("Error Selecting : %s ",err ); res.render('testtable',{page_title:"Test Table",data:rows}); }); }); };
意见/ testtable.ejs
<html><body> <table border="1" cellpadding="7" cellspacing="7"> <tr> <th width="50px">No</th> <th>Field 1</th> <th>Field 2</th> <th>Field 3</th> </tr> <% if(data.length){ for(var i = 0;i < data.length;i++) { %> <tr> <td><%=(i+1)%></td> <td><%=data[i].field1%></td> <td><%=data[i].field2%></td> <td><%=data[i].field3%></td> </tr> <% } }else{ %> <tr> <td colspan="3">No user</td> </tr> <% } %> </table> </body></html>
要运行这个“项目”,你必须安装一些节点模块,你可以在你的根目录下创build一个名为“package.json”的文件:
{ "name": "application-name", "version": "0.0.1", "private": true, "scripts": { "start": "node app.js" }, "dependencies": { "ejs": "^1.0.0", "express": "3.5.1", "express-myconnection": "1.0.4", "jade": "*", "mysql": "2.2.0" } }
并在您的项目根目录下调用“npm install”。
我希望它可以帮助你。
- NodeJS服务器,res.sendfile返回HTML但不包含“jscript includes”(<script src>)
- 在循环中使用window.location插入数据时发生问题(GET方法)
- 要求不适用于节点opcua
- Node.js未定义的CSS文件
- 我怎么知道为什么我的节点应用程序在Heroku上崩溃? (HTML,Stripe,Heroku,NodeJS)
- 合并angular2模板时在html中的EOF字符?
- 将jQuery ajax调用转换为vanilla Javascript – 不能POST / public / error
- 在本地主机服务器上找不到png文件
- 基于用户input的dynamic网站内容