Sie können Abfrageergebnisse mit socket.io an den Client senden. Dann können Sie Ergebnisse zu Ihrem HTML im Client hinzufügen. Angenommen, Ihre 'Kunden' Tabelle hat die folgende Struktur:
name varchar(20)
password varchar(20)
und Sie haben ein leeres Element in Ihrem HTML. Sie können 'Kunden' Ereignis im Server emittieren:
con.query("SELECT * FROM customers", function (err, results, fields) {
if (err) throw err;
console.log(result);
// we only send results as we know the fields
socket.emit('customers', results);
});
Und in der Client-Code (Mops oder Jade):
script.
let socket = io();
socket.on('customers', data => {
for (let i = 0, max = data.length; i < max; i++) {
document.getElementById('customers').innerHTML += data[i].user + ' ' + data[i].password + '<br/>;
}
});
Wenn Sie die Tabellenfelder nicht wissen (es ist kaum möglich, ist es nicht) Sie beide results
und fields
zurückgegeben von der Abfrage, wie im folgenden Beispiel verwenden können:?
server.js:
const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);
const mysql = require('mysql');
let con = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: '',
database: 'mydb'
});
io.on('connection', function (socket) {
console.log('client connected');
socket.on('show',() => {
con.query('SELECT * FROM customers', (err, results, fields) => {
if (err) {
throw err;
}
//we send both: results and fields here as we don't know the fields
socket.emit('customers', {results: results, fields: fields});
});
});
});
http.listen(3000, function(){
console.log('server listening on *:3000');
});
app.set('views', __dirname);
app.set('view engine', 'pug');
app.get('/', (req,res) => {
res.render('index');
});
index.pug:
doctype html
html
head
meta(charset="UTF-8")
script(src="/socket.io/socket.io.js")
body
style.
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th, td {
padding: 5px;
}
#mysql {
margin-top: 10px;
}
div
h3 Query results
button(id='show') Show
#mysql
script.
let socket = io();
socket.on('customers', data => {
let mysql = document.getElementById('mysql');
let table = document.createElement('TABLE');
mysql.appendChild(table);
let tableHead = document.createElement('THEAD');
table.appendChild(tableHead);
let tr = document.createElement('TR');
tableHead.appendChild(tr);
for (let i = 0, max = data.fields.length; i < max; i++) {
let th = document.createElement('TH');
th.width = '75';
th.appendChild(document.createTextNode(data.fields[i].name));
tr.appendChild(th);
}
let tableBody = document.createElement('TBODY');
table.appendChild(tableBody);
for (let i = 0, max = data.results.length; i < max; i++) {
let tr = document.createElement('TR');
for (let k = 0, max = data.fields.length; k < max; k++) {
let td = document.createElement('TD');
td.appendChild(document.createTextNode(data.results[i][data.fields[k].name]));
tr.appendChild(td);
}
tableBody.appendChild(tr);
}
});
document.getElementById('show').addEventListener('click',() => {
socket.emit('show');
});
Hier rufen wir Informationen über die Felder der Tabelle, aus data.fields
und es verwenden, um die Tabelle in den Bau. Wir müssen also nur Zugriff auf die Datenbank haben und den Namen der Tabelle kennen.