作为前言,我对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