javascript - 使用 nodeJS 显示为 HTML
问题描述
我对NodeJS真的很陌生,我想了解的是是否有办法像JS一样使用NodeJS,我正在尝试从数据库中获取信息,并将其显示在我的index.html中的一个div中。当我尝试通过 queryselector 执行此操作时,我收到一个错误,到目前为止,我所做的是将新页面中的数据作为 JSON 接收。我的 index.html 文件中有一个名为 content-txt 的 div,这是我放置响应的地方。此外,当我尝试遍历行时,我收到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);
});
});
索引.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>
解决方案
按照设计,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);
});
});
推荐阅读
- java - 安装詹金斯,无法在 Windows 10 中打开端口 8080
- sql - SQL 列比较
- xaml - 模拟器在 Xamarin Forms 上显示空白屏幕问题
- javascript - Ramda 数组到多参数函数
- git - 为什么 .gitconfig [includeIf] 不起作用?
- regex - 如何在列表中仅保留 $product.description_short 的第一段?
- java - gradle 构建错误:无法解析 com.android.support:appcompat-v7:28.0.0
- python - 编译器问题:使用字符串和列单元格给定 T 或 F 条件的 replace() 上的 AssertionError
- flutter - 如何测试 Flutter 中是否抛出异常?
- vb.net - 从数据库中搜索数据并在未绑定但预定义的列 Datagridview VB.Net 中显示