Отображение в HTML с помощью nodeJS - PullRequest
0 голосов
/ 25 октября 2019

Я действительно новичок в NodeJS. Я пытаюсь понять, есть ли способ использовать NodeJS, такой как JS, я пытаюсь получить информацию из базы данных и отобразить ее внутри div в моем индексе. HTML. Когда я попытался сделать это с помощью queryselector, я получил ошибку, и до сих пор я получал данные на новой странице в виде JSON. У меня есть div в моем файле index.html, который называется content-txt, это место, куда я помещаю ответ. Кроме того, когда я пытаюсь выполнить цикл по строкам, я получаю Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client.

Мой код: app.js:

var express = require('express');
var mysql = require('mysql');
var app = express();

var connect = mysql.createConnection({
    // Properties
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'dyextension'
});

connect.connect(function(error) {
    if(!!error) {
        console.log('Could not connect to DB');
    } else {
        console.log('Successfully connected to DB');
    }
});

app.listen(5500, ()=>console.log('Express server is running on port no: 5500'));

// Get all alerts
app.get('/alerts', (req,res)=>{
    connect.query('SELECT * FROM alerts', (err,rows,fields)=>{
        if(!err){
            for(let i=0; i<rows.length; i++){
                res.send(`<div>${rows[i].alert_name}</div>`);

            }
        }
        else
        console.log(err);
    });
});

Index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
    <!-- Bootstrap CDN -->
    <link href="https://stackpath.bootstrapcdn.com/bootswatch/4.3.1/litera/bootstrap.min.css" rel="stylesheet" integrity="sha384-D/7uAka7uwterkSxa2LwZR7RJqH2X6jfmhkJ0vFPGUtPyBMF2WMq9S+f9Ik5jJu1" crossorigin="anonymous">
    <title>d</title>
</head>
<body>
      <!-- Content here -->
      <div class="container" id="content-txt">

      </div>
    <script src="app.js"></script>
</body>
</html>

1 Ответ

0 голосов
/ 25 октября 2019

По своей сути протокол HTTP может возвращать ответ только один раз.

Способ сделать это с помощью своего кода - объединить результаты с переменной, а затем вернуть эту переменную в качестве ответа.

var express = require('express');
var mysql = require('mysql');
var app = express();

var connect = mysql.createConnection({
    // Properties
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'dyextension'
});

connect.connect(function(error) {
    if(!!error) {
        console.log('Could not connect to DB');
    } else {
        console.log('Successfully connected to DB');
    }
});

app.listen(5500, ()=>console.log('Express server is running on port no: 5500'));

// Get all alerts
app.get('/alerts', (req,res)=>{
    connect.query('SELECT * FROM alerts', (err,rows,fields)=>{
        if(!err){
            let results;
            for(let i=0; i<rows.length; i++){
                results += `<div>${rows[i].alert_name}</div>`;

            }
            return res.send(results);
        }
        else
        console.log(err);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...