【问题标题】:Node-JS Expose Mysql DB as Rest ServiceNode-JS 将 Mysql DB 公开为 Rest 服务
【发布时间】:2018-12-11 12:28:56
【问题描述】:

我对 NodeJs 很陌生,在这里努力构建一种方法

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

我的任务是使用 NODEJS

从 Mysql 创建 REST API

作为初学者,我应该如何处理这个问题?

在 Node js 中要学习哪些主题才能做到这一点?

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

任何帮助

谢谢

【问题讨论】:

    标签: mysql node.js node-modules


    【解决方案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);
    

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

    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
    

    【讨论】:

    • 感谢您的回复。我们可以像上面一样暴露存储过程吗
    猜你喜欢
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2012-10-26
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多