Node-JS公开Mysql DB作为Rest Service

时间:2018-07-03 08:53:22

标签: mysql node.js node-modules

我对NodeJ还是很陌生,并在这里努力构建一种方法

我们正在使用Oracle JET(javascript框架)构建应用程序,并且我们将Mysql数据库作为应用程序的后端

我的任务是使用 NODEJS

从Mysql创建 REST API

作为初学者,我应该如何处理?

要在Node js中学习哪些主题?

存储过程也可以作为Rest API公开吗?

任何帮助

谢谢

1 个答案:

答案 0 :(得分:1)

使用Express返回mysql结果非常简单,它不需要很多代码:

 const express = require("express");
const mysql   = require('mysql');

const connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : 'root',
    database : 'my_db'
});

connection.connect((err) => {
     if(err) {
         console.error("Error connecting to db: ", err); 
     } else {
         console.log("Connected to db successfully"); 
     }
});

const app = express();

app.get("/users", (req,res) => {

    connection.query('SELECT * FROM Users', (err, rows, fields) => {

        if (err) {
            console.error('Error while performing query: ', err);
        } else {
            console.log('Result: ', rows);
            // Send to caller as json
            res.json(rows);
        }

    });
});

// Call Stored Proc 'GetUsers'
app.get("/get_users", (req,res) => {

    connection.query('CALL GetUsers()', (err, rows, fields) => {

        if (err) {
            console.error('Error while performing query: ', err);
        } else {
            console.log('Result: ', rows);
            // Send to caller as json
            res.json(rows);
        }

    });
});

app.listen(3000);

例如,您可以转到http://localhost:3000/users,使用Curl(或浏览器)进行查询

curl http://localhost:3000/users

您将得到如下结果:

[{
    "firstName": "Craig",
    "lastName": "Michaels"
},
{
    "firstName": "Jim",
    "lastName": "Thomson"
},
{
    "firstName": "Abigail",
    "lastName": "Moore"
}]

我添加了一个路径/ get_users,该路径调用GetUsers()存储过程(定义如下):

DROP PROCEDURE IF EXISTS GetUsers; 
DELIMITER // 
CREATE PROCEDURE GetUsers() 
BEGIN 
    SELECT * from Users ;
END // 
DELIMITER ;

表用户是这样的:

create table users ( firstName varchar(100), lastName varchar(100)  );

我们可以通过以下方式致电

curl http://localhost:3000/get_users