Javascript 如何使用NodeJS将MySQL中的数据显示到HTML页面

Javascript 如何使用NodeJS将MySQL中的数据显示到HTML页面,javascript,html,mysql,node.js,express,Javascript,Html,Mysql,Node.js,Express,我是NodeJS的新手,我正在尝试将从MySQL表中获取的数据显示到HTML文件中的一个表中。但是我找不到任何对我有帮助的东西。如果有人能帮我找到解决方案,我将不胜感激!:) 以下是我的js代码: //app.js //获取mysql服务 var mysql=require('mysql'); var express=需要(“express”); var-app=express(); app.get('/',函数(请求,响应){ 获取数据(响应); console.log('Done.disp

我是NodeJS的新手,我正在尝试将从MySQL表中获取的数据显示到HTML文件中的一个表中。但是我找不到任何对我有帮助的东西。如果有人能帮我找到解决方案,我将不胜感激!:) 以下是我的js代码:

//app.js
//获取mysql服务
var mysql=require('mysql');
var express=需要(“express”);
var-app=express();
app.get('/',函数(请求,响应){
获取数据(响应);
console.log('Done.displateddata');
});
//添加访问数据库的凭据
var connection=mysql.createConnection({
主机:“localhost”,
用户:'根',
密码:“”,
数据库:“Breunninger”,
端口:'3306'
});
//连接到mysql
connection.connect(函数(err){
if(err){throw err;}
console.log('Connected');
});
函数执行(sql、cb){
查询(sql、函数(结果、字段){
cb(结果);
})
}
函数获取数据(响应){
executeQuery(“在(user.id=Buchung.userid)上从Buchung加入用户中选择用户名、tor、datum、sendungsstruktur)”,函数(结果){
控制台日志(结果);
回答。写(“”);
for(结果[0]中的var列){
响应。写入(“”+列+“”);
回答。写(“”);
}
for(结果中的var行){
回答。写(“”);
for(结果[行]中的var列){
响应。写入(“”+结果[行][列]+“”);
}
回答。写(“”);
}
响应。结束(“”);
});
}

executeQuery函数中有一个小错误(但很关键!),第一个参数应该是error对象,因此如果您可以按以下方式重新编写,您的查询应该可以工作

function executeQuery(sql, cb){
    connection.query(sql, function( error, result, fields){
        if (error) {
            console.error("An error has occurred:", error);
        } else {
            cb(result);
        }   
    })
}
节点回调通常为错误对象保留第一个参数,很容易忽略这一点

另外,我们应该清楚,Node.js Express代码将在服务器端运行,因此要查看结果,您需要将浏览器指向它所服务的主机和端口,例如(如果您这样做:)


你的例子中有什么不起作用?你能运行你的代码并提供示例输出吗?我不知道有什么错误。控制台只显示数据库已连接。但是我也想在控制台中看到结果,我想在一个HTML文件中显示结果(但我不知道怎么做,我在www上也找不到任何东西)@max这能回答你的问题吗?此外,您正在使用express,而
response
没有
write
功能
executeQuery
的回调应该有如下参数
(错误、结果、字段)
。您是否检查了
错误的值
?谢谢您的回答!我尝试使用新的executeQuery函数,但数据仍然没有显示在我的控制台中。我应该使用哪个端口?Apache服务器或我的数据库的端口?如果我使用数据库中的端口,我会得到EADDRINUSE..您应该能够使用数据库端口或Apache服务器以外的任何端口。通用端口号(用于开发目的)为3000、8000、8080。试试看!请记住,您的浏览器地址将是:,例如。(我假设您正在本地运行!)好的,我现在使用了另一个端口。但是结果仍然没有显示在我的控制台中:(我真的很抱歉问了这么多愚蠢的问题,但我还在学习:-没有愚蠢的问题。我们一直在学习!所以你正在运行node,然后将浏览器连接到你的node实例?代码只有在Express server收到请求时才会运行!不,我只是启动node应用程序来检查esult出现在我的控制台中
app.listen(3000);