如何从sql中获取nodejs的数据并返回json?
Posted
技术标签:
【中文标题】如何从sql中获取nodejs的数据并返回json?【英文标题】:How to get data from nodejs from sql and return json? 【发布时间】:2017-06-18 01:28:41 【问题描述】:我是 js 新手。最近想实现一个功能,页面上有一个获取数据的按钮,页面显示数据后点击访问数据库,mysql服务器的数据库是用nodejs构建的,如何用nodejs编写。
XML/HTML 代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<button>get</button>
<!-- show data -->
<div id="res"></div>
</body>
<script src="node_getdata.js"></script>
</html>
JavaScript 代码
var http = require("http");
var mysql = require("mysql");
var conn = mysql.createConnection(
host : "localhost",
user : "root",
password : "",
database : "test"
);
conn.connect();
conn.query("select * from person", function(err,results)
if(err)
console.log(err);
return;
console.log("Result", results);
);
【问题讨论】:
使用节点创建网络服务器并使用 ajax 调用从 HTML 页面调用您的函数。 【参考方案1】:您可以使用 Express 框架创建一个 Web 服务器,看起来像这样(非常简单的示例):
var express = require('express');
var app = express();
var mysql = require('mysql');
var conn = mysql.createConnection(
host : 'localhost',
user : 'root',
password : '',
database : 'test'
);
conn.connect();
app.get('/test', function(request, response)
conn.query('select * from persons', function(error, results)
if ( error )
response.status(400).send('Error in database operation');
else
response.send(results);
);
);
app.listen(3000, function ()
console.log('Express server is listening on port 3000');
);
当然你应该把数据库操作的结果转换成一些JSON格式,以便以可读的形式获得它。
然后,如果您想使用纯 javascript,只需使用 XMLHhttpRequest
调用您的 REST api。
function getPersons()
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.onreadystatechange = function()
if ( xmlHttpRequest.readyState == XMLHttpRequest.DONE && xmlHttpRequest.status == 200 )
document.getElementById("persons").innerHTML = xmlHttpRequest.responseText;
;
xmlHttpRequest.open('GET', 'http://localhost/test', true);
xmlHttpRequest.send();
而且,为了执行 HTTP 调用,您可以使用 onClick
事件定义 button
:
<button type='button' onclick='getPersons()'>Get persons!</button>
【讨论】:
以上是关于如何从sql中获取nodejs的数据并返回json?的主要内容,如果未能解决你的问题,请参考以下文章
从 Nodejs 中的 mySQL 获取数据时如何从 Async/await 函数获取返回值