使用来自mysql数据库的NodeJs在html / js文件中显示数据

我的index.js文件是

var express = require('express'); var app = express(); var path = require('path'); var router = express.Router(); var data = require('./data/jsonData'); var createDatabase = require('./data/db'); var careateTable = require('./data/createTable'); var insert = require('./data/insert'); var bodyParser = require('body-parser'); var select = require('./data/select'); app.use(express.static(path.join(__dirname, 'www'))); app.use(express.static(path.join(__dirname, 'form'))); app.use(bodyParser()); app.get('/' , function (req , res) { res.sendFile(path.join(__dirname + '/www/index.html')); }); app.get('/data' ,function (req , res) { res.json(data); }); app.get('/form' ,function (req , res) { res.sendFile(path.join(__dirname + '/form/index.html')); }); app.post('/form' ,function (req , res) { console.log(req.body.user); console.log(req.body.password); insert.insertModule(req.body.user , req.body.password); res.sendFile(path.join(__dirname + '/www/index.html')); }); app.get('/show' , function (req , res) { var i ; select.select( function (err, results) { if (err == 'error') { console.log(err); } else { console.log(results); res.send(results.username); } }); }); app.listen(3000); console.log("App is listning on port 3000"); 

和select.js是

 var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "", database: "NodeDataBase" }); con.connect(function (err) { if (err) throw err; console.log("Connected!"); }); module.exports = { select: function (callback) { var sql = "SELECT username , password FROM login "; con.query(sql, function (err, result , fields) { if (err) { callback("error", err) } else { callback("success", result) } }); } } 

我想显示结果对象数据到HTML文件,那么我该如何做到这一点,请build议我。

从获取请求/显示它将显示从数据库中提取的所有用户数据

我将尝试解释它的工作方式(现在可以看到“ http:// localhost:3000 / show ”上的数据)。 呃,伙计们,如果我用错误的方式解释某些事情,请纠正我。

在那里,你的代码中有什么是

服务器端代码

  • mysql :声明连接到数据库(这是你的数据库连接器)
  • node.js :声明方法来从数据库中放入/推送/获取数据(你的服务器端是这样的)
  • express.js :声明url把/推/从数据库中获取数据(HTTP / HTTPS路由器)

然后,如果我们检查代码,我们可以看到一个服务器API的声明 – 例如app.get('/show')

在那里,你所说的是表示,将用方法GET使用url / show

这是你的客户在场景中出现的地方。 现在,我们假设你的服务器已经启动并正在运行,正在等待http:// localhost:3000 / show服务GET请求。

如果这是正确的,当点击链接时,你应该看到用户名,现在你需要一个http客户端连接到你的http服务器端。

您可以从您的服务器上获取HTML客户端上的数据的方式是javascript。

然后,你将需要build立一个HTML文件,也将包含一个JavaScript脚本(在我的例子写在angular )。

HTML(这是用jade写的,你可以转换它 )看起来像这样:

客户端HTML代码您应该创build一个index.html文件,并粘贴这个代码

 <!doctype html> <html ng-app> <head> <title>My AngularJS App</title> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script> </head> <body> <div ng-controller="MyCtrl"> <table> <thead> <tr> <th> <p>Name</p> </th> </tr> </thead> <tbody> <tr ng-repeat="user in users"> <td> <p>{{user}}</p> </td> </tr> </tbody> </table> </div> <script> var myApp = angular.module('myApp',[]); function MyCtrl($scope, $http) { //This method will call your server, with the GET method and the url /show $http.get("http://localhost:3000/show").then(function(success){ if(success.data.length>0) { $scope.users=success.data; } }); } </script> </body> </html> 

此代码应该捕获数据并在表中显示数据库中每个名称的一行。

希望它有帮助,至less作为整个堆栈(客户端 – 服务器)如​​何工作的一个清楚的解释。

也许可以使用EJS,Jade等视图引擎将数据从节点呈现到前端。

如果你想呈现的HTML页面上的数据,我会这样做:http:// localhost:3000 / show :with json -resonponse

 var express = require('express'); var app = express(); require('json-response'); app.get('/', function(req, res){ res.ok({foo: 'bar'}, 'hello world'); }); 

我将从链接返回json,并在Index.html的帮助下,jQuery / Ajax将命中链接,检索值并显示在HTML