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