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

时间:2017-07-04 17:48:10

标签: html mysql node.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文件,那么我该怎样才能建议我。

来自get request / show的

将显示从数据库中提取的所有userdata

2 个答案:

答案 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上显示