我的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 request / show的将显示从数据库中提取的所有userdata
答案 0 :(得分:1)
我会尝试解释它的工作方式(考虑到你现在能够看到'http://localhost:3000/show'上的数据)。 Plz,伙计们,如果我以错误的方式解释某些事情,请纠正我。
在那里,您的代码中包含的是
服务器端代码
mysql
:声明与数据库的连接(这是您的数据库连接器)node.js
:声明从数据库中放入/推送/获取数据的方法(您的服务器端不变)express.js
:声明从数据库中放入/推送/获取数据的URL(http / https路由器)
然后,如果我们检查代码,我们可以看到服务器api的声明 - 例如app.get('/show')
在那里,你所说的是表达,将使用 GET
的方法使用网址 / show这是您的客户在场景中出现的位置。现在,我们假设您的服务器已启动并正在运行,等待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>
此代码应捕获数据,并在表中为数据库中的每个名称显示一行。
希望它有所帮助,至少作为完整堆栈(客户端 - 服务器)如何工作的明确解释。
答案 1 :(得分:0)
可能是您可以使用EJS,Jade等视图引擎将数据从节点渲染到前端。
如果你想在html页面上渲染数据,我将像http://localhost:3000/show一样:使用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上显示