Отобразить документы Rethinkdb в виде таблицы с html - PullRequest
0 голосов
/ 15 апреля 2020

Кто-нибудь знает способ чтения документов и их отображения в формате таблицы, как это делает проводник данных в 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. Работая над проектом, изучая что-то новое, приносим извинения за неудобства.

С уважением!

...