Кто-нибудь знает способ чтения документов и их отображения в формате таблицы, как это делает проводник данных в Rethink Administration Console? Справочное изображение здесь.
У меня есть этот код на стороне клиента для отображения данных
<table style="width:100%">
<tr>
<th>Data</th>
</tr>
<tr>
<td id="messages"></td>
</tr>
</table>
со следующим сценарием
<script>
var socket = io();
function cleardb(){
socket.emit('cleardb');
}
(function() {
var form = document.querySelector('form');
form.addEventListener('submit', function(e) {
e.preventDefault();
var contenedor = e.target.querySelector('#contenedor');
var idCarga = e.target.querySelector('#idCarga');
/*var aeration = e.target.querySelector('#aeration');
var palletss = e.target.querySelector('#palletss');
var pieces = e.target.querySelector('#pieces');
var packages = e.target.querySelector('#packagess');
var delivery = e.target.querySelector('#delivery');*/
var data = {
contenedor: contenedor.value,
idCarga: idCarga.value,
/*aeration: aeration.value,
palletss: palletss.value,
pieces: pieces.value,
packagess: packagess.value,
delivery: delivery.value*/
};
socket.emit('/messages', data);
e.target.reset();
});
socket.on('/messages', function(data) {
var messages = document.querySelector('#messages');
var message = '<b>' + ':<b> ' +
data.id+':<b> ' +
data.date +':<b> ' +
data.contenedor + ':<b>' +
data.idCarga + ':<b> ' /*+
data.aeration + ':<b> ' +
data.palletss + ':<b> ' +
data.pieces + ':<b> ' +
data.packagess + ':<b> ' +
data.delivery + ':*/'<br>';
messages.innerHTML += message;
});
})();
</script>
На стороне сервера у меня это
const http = require('http');
const fs = require('fs');
const express = require('express');
const socketIO = require('socket.io');
const r = require('rethinkdb');
const config = require('./config.json');
// Loading Express, HTTP, Socket.IO and RethinkDB
const db = Object.assign(config.rethinkdb, {
db: 'timeline'
});
const app = express();
const server = http.Server(app);
const io = socketIO(server);
// Connecting to RethinkDB server
r.connect(db)
.then(conn => {
// Index route which renders the index.html
app.get('/', (req, res) => {
fs.readFile(`${__dirname}/index.html`, (err, html) => {
res.end(html || err);
});
});
// The changefeed is provided by change() function
// which emits broadcast of new messages for all clients
r.table('messages')
.changes()
.run(conn)
.then(cursor => {
cursor.each((err, data) => {
const message = data.new_val;
io.sockets.emit('/messages', message);
});
});
// Listing all messages when new user connects into socket.io
io.on('connection', (client) => {
r.table('messages').run(conn).then(cursor => {
cursor.each((err, message) => {
io.sockets.emit('/messages', message);
});
});
// Listening the event from client and insert new messages
client.on('/messages', (body) => {
const {
contenedor, idCarga
} = body;
const data = {
contenedor, idCarga, date: new Date()
};
r.table('messages').insert(data).run(conn);
});
//
client.on('cleardb', function(data) {
r.table('messages').delete().run(conn);
});
//
});
server.listen(3000, () => console.log('Timeline Server!'));
})
.error(err => {
console.log('Can\'t connect to RethinkDB');
throw err;
});
Проблема в том, что я не могу найти способ разделить отдельные поля и поместить их в разные ячейки таблицы.
I ' Я использую Node.js и Socket.io для вставки данных в режиме реального времени и обновления их в режиме реального времени на всех подключенных клиентах.
Я новичок в Node- JavaScript и, очевидно, Rethink. Работая над проектом, изучая что-то новое, приносим извинения за неудобства.
С уважением!