我的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文件中,那么我该如何做呢?请建议我。
从GET请求/显示中,它将显示从数据库中提取的所有用户数据。
最佳答案
我将尝试解释它的工作方式(考虑到您现在可以看到“http://localhost:3000/show”上的数据)。拜托,伙计们,如果我解释错误的话,请纠正我。
在这里,你的代码中的是
服务器端代码mysql
:声明与数据库的连接(这是您的数据库连接器)node.js
:声明从数据库中放入/推送/获取数据的方法(服务器端原样)express.js
:声明从数据库中放入/推送/获取数据的URL(http/https路由器)
然后,如果我们检查代码,就可以看到服务器API的声明-例如app.get('/show')
这里,您所说的是express,将使用url/show和方法GET
这是你的客户出现在现场的地方。现在,我们假设您的服务器已启动并正在运行,等待在http://localhost:3000/show上提供GET请求服务。
如果这是正确的,那么在单击链接时,您应该看到用户名,现在您需要一个HTTP客户机来连接到HTTP服务器端。
从服务器获取HTML客户机上的数据的方法是JavaScript。
然后,您将需要构建一个HTML文件,该文件还将包含一个javascript脚本(在我的示例中是用angular编写的)。
HTML(这是用jade编写的)。您可以convert it)如下所示:
客户端HTML代码
您应该创建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>
此代码应该捕获数据并在表中为数据库中的每个名称显示一行。
希望它能有所帮助,至少能清楚地解释完整的堆栈(客户机-服务器)是如何工作的。