J'ai une question sur une application que je crée, j'utilise une base de données Oracle et j'obtiens des informations de la base de données et je les présente à l'écran via un tableau, mais je veux essayer de traiter les données individuellement, comme créer un paragraphe et afficher une valeur.
Je ne peux présenter les données que sous forme de tableaux, existe-t-il un autre moyen ? Si quelqu'un peut m'aider, merci beaucoup.
J'accepte tous les conseils pour améliorer le code.
Mon Index.htmlpage
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Apontamentos da Produção</title> <link rel="stylesheet" type="text/css" href="styles.css" media="screen" /> </head> <body> <meta http-equiv="refresh" content="5"> <div id="data"></div> <div class="grid-container"> <div class="container"> <div class="texto"> PAINEL-1 | APONTAMENTOS DA PRODUÇÃO</div> <div class="clock"></div> </div> </div> <div class="progress"> <div class="progress-bar"></div> </div> <br> <!-- Tabela principal, apresentando os apontamentos --> <table id="table" class="tablePrincipal"> <tr class="trPrincipal"> <th class="th2" style="width: 11%;">Data</th> <th class="th2" style="width: 8%; ">Hora</th> <th class="th2" style="width: 5%;">Orig.</th> <th class="th2" style="width: 8%;">O.P.</th> <th class="th2" style="width: 10%;">Produto</th> <th class="th2" style="width: 8%;">Deriv.</th> <th class="th2" style="width: 9%;">Peso (TN)</th> <th class="th2" style="width: 7%;">Refugo (TN)</th> <th class="th2" style="width: 13%;">Lote</th> <th class="th2" style="width: 60%;;">Operador</th> </tr> </table> <br> </body> <script> // Tabela de apontamentos. Listagem. // Aqui é onde é feito o push de informações, chamando pelo caminho e colocando o ID da tabela que ele vai levar as informações window.onload = function () { fetch('http://localhost:3000/teste') .then(response => response.json()) .then(data => { console.log(data); var table = document.getElementById('table'); // Primeiro define a variavel, e coloca o comando para inserir uma linha, é tudo organizado por rows for (var i = 0; i < 7; i++) { var row = table.insertRow(i + 1); var cell1 = row.insertCell(0); var cell2 = row.insertCell(1); var cell3 = row.insertCell(2); var cell4 = row.insertCell(3); var cell5 = row.insertCell(4); var cell6 = row.insertCell(5); var cell7 = row.insertCell(6); var cell8 = row.insertCell(7); var cell9 = row.insertCell(8); var cell10 = row.insertCell(9); // Queria trabalhar com os dados separadamente, tentar criar um <p> e colocar um dado para apresentar. // Queria tentar fazer um calculo com essa variável, mas não funciona assim var cell11 = cell7 * 2; // Aqui chama a variavel e coloca a linha na tabela cell1.innerHTML = data[i][0]; cell2.innerHTML = data[i][1]; cell3.innerHTML = data[i][2]; cell4.innerHTML = data[i][3]; cell5.innerHTML = data[i][4]; cell6.innerHTML = data[i][5]; cell7.innerHTML = data[i][6]; cell8.innerHTML = data[i][7]; cell9.innerHTML = data[i][8]; cell10.innerHTML = data[i][9]; }} )} </script> </html>
C'est mon Index.js où je fais des sélections et envoie des données
const express = require('express'); const oracledb = require('oracledb'); const app = express(); var cors = require('cors') app.use(cors()) const http = require('http'); app.engine('html', require('ejs').renderFile); app.set('view engine', 'html'); // Connection details for the Oracle database const connectionString = ''; const user = ''; const password = ''; // Connect to the database app.get('/teste', (req, res) => { // within the endpoint, query the database oracledb.getConnection( { connectionString: connectionString, user: user, password: password }, function teste(err, connection) { if (err) { console.error(err.message); return; } console.log('Conexão deu certo!'); const query = 'SELECT DATREA,HORREA,CODORI,NUMORP,CODPRO,CODDER,QTDRE1,QTDRFG,CODLOT,OPERADOR from USU_VPROEXT ORDER BY DATREA DESC, HORREA DESC'; connection.execute(query, [], (err, result) => { if (err) { console.error(err.message); return; } console.log('Banco de Dados Atualizado'); console.log(); // return the results to the user res.json(result.rows); }); }); }); app.listen(3000, () => { console.log('Server is listening on port 3000'); });
Hypothèse :
Comme je ne peux pas reproduire exactement le scénario, je vais me concentrer sur le côté client et prendre pour acquis que votre point de terminaison backend renverra correctement un tableau, par exemple :
data[iRow][iColumn]
Une telle hypothèse vient de lignes comme celle-ci
cell1.innerHTML = data[i][0];
Exemple de données définies statiques :
Je ne sais pas vraiment si les données sont simplement un tableau de tableaux ou s'il existe un moyen d'adresser les valeurs de colonne par nom de colonne. Quoi qu'il en soit, nous nous en tiendrons ici au paradigme du tableau simple, car il semble fonctionner selon vos propres mots.
Ici, nous définissons un
data
tableau avec 2 lignes et 10 colonnes chacune :Définissez les noms et l'ordre des colonnes :
Je peux aussi dire l'ordre des colonnes récupérées dans la base de données depuis l'affichage de la requête SQL, voici la liste ordonnée :
DATREA、HORREA、CODORI、NUMORP、CODPRO、CODDER、QTDRE1、QTDRFG、CODLOT、OPERADOR
Nous le définissons comme un tableau de chaînes en js comme suit :
Convertir un tableau de lignes en objet :
Convertissez la ligne
data
en un tableau d'objets ayant comme propriétés des lignes et des colonnes nommées d'après la liste de colonnes présentée précédemment :Pour la première ligne de données (
data[0]
), l'objet suivant sera renvoyé :Comment afficher ces données dans le document ?
En fonction de vos objectifs spécifiques, vous disposez de moyens illimités pour y parvenir. Vous n'avez pas réellement besoin de convertir le tableau en objet en premier lieu, mais cela facilite l'accès à ses colonnes par leur nom plutôt que par l'utilisation de numéros d'index.
Quoi qu'il en soit, si par exemple vous devez afficher chaque ligne comme le contenu d'un seul paragraphe, avec la concaténation de toutes ses données de colonne comme contenu :
Démo :
Voici une démonstration en direct de ce qui a été dit jusqu'à présent :