如何从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:从 SQL 查询中获取 JSON

nodejs查询数据库后,获取result结果集并赋值返回

从 Nodejs 中的 mySQL 获取数据时如何从 Async/await 函数获取返回值

如何使用 nodeJS 从 axios 库中获取有效的 JSON 响应

在flutter中获取JSON数据返回NULL

如何将从接口取到的json数据存入mysql数据库