如何从连接到 Node.js 服务器的 MySQL 数据库发送数据,以便我可以将其用于客户端 JavaScript



作为前言,我对NodeJs和MySQL完全陌生。

我有一个在 Node 上运行的网站,像这样快速

var express = require('express');
var app = express();
var path = require("path");
var mysql = require("mysql");
app.use(express.static('Script'));
var con = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "password", 
    database: "blocks"
});
con.connect(function(err){
    if(err) throw err;
    console.log("connected!");
    con.query("SELECT * FROM blockchain", function(err, result, fields){
        if(err) throw err;
        console.log(result);
    });
 });
app.get('/', function (req, res) {
   res.sendFile(path.join(__dirname + '/index.html'));
});

app.listen(8080);

它已成功连接到服务器,并且可以在我的命令提示符下打印出服务器值。

有没有办法将此数据发送到我的网站,以便我可以将这些值用于客户端脚本?例如,我想在我的index.html文件中创建一个新的<p>元素来表示数据库中的每个条目,从而改变我的网站显示的信息。

因此,如果数据库为空,我的网站将看起来为空。如果数据库有三个条目,我的网站将有 3 个<p>元素对应于三个条目的输入。

为了容易。首先,我们打开数据库连接:

 con.connect(function(err){
   if(err) throw err;
   console.log("connected!");

然后,如果建立了连接,我们可以开始回答请求:

    app.get("/", (req, res) => {

现在,当请求传入时,我们从数据库获取最新数据:

      con.query("SELECT * FROM blockchain", function(err, result, fields){
         if(err) return res.end("sth went wrong :(");
         res.end(result);
     });
   });
 });

现在你只需要将数据传输到html,为此我建议使用模板引擎。

从数据库查询数据时,这是一个异步操作。换句话说,在获得所有数据之前需要时间。因此,在您的情况下,最好使用承诺:

 var mysql = require('promise-mysql');
mysql.createConnection({
    host: 'localhost',
    user: 'sauron',
    password: 'theonetruering',
    database: 'mordor'
}).then(function(conn){
    var result = conn.query('select `name` from hobbits');
    conn.end();
    return result;
}).then(function(rows){
      for (var i in rows){
          document.write("<p>name[i]</p>");
      }
});

.then 后面的功能在查询完成后执行。现在,您可以使用 for 循环对查询进行排序。

Mysql-promise: https://www.npmjs.com/package/promise-mysql

HTML DOM 写入:https://www.w3schools.com/jsref/met_doc_write.asp

相关内容

最新更新