node js将mysql db公开为rest服务

bvuwiixz  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(379)

我对nodejs非常陌生,正在努力构建一种方法
我们正在用oraclejet(javascript框架)构建一个应用程序,我们有mysql数据库作为应用程序的后端
我的任务是使用nodejs从mysql创建restapi
作为一个初学者,我应该如何处理这个问题?
在node js中要学习哪些主题才能做到这一点?
存储过程也可以作为restapi公开吗?
有什么帮助吗
谢谢

jchrr9hc

jchrr9hc1#

使用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);

您可以使用curl(或您的浏览器)通过转到http://localhost:3000/用户,例如。

curl http://localhost:3000/users

你会得到这样的结果:

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

我添加了一个path/get\u 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

相关问题