使用Node.js与Express搭建简易数据库增删改查接口

作者:夜航船

时间:2026-10-23

浏览:549

本文介绍如何利用Node.js、Express框架及mysql包,快速搭建一个简单的后台接口,实现对MySQL数据库的增删改查操作。通过配置body-parser解析请求体,结合路由与数据库连接池,完成基础的数据交互功能。

文章目录

项目初始化与基础环境搭建

本周进行实验开发,需要提供一个简单的后台接口以支持对数据库的增删改查操作。此前仅使用过PHP和Java编写后台,鉴于JavaScript实现较为便捷且开发速度较快,本次决定采用JS来完成这一简单的增删改查接口实现。

初始化

  • 所需工具:Node.js
  • 依赖包:express、mysql、body-parser(均为npm包)

为了执行JS代码,需先下载并安装Node.js。安装完成后,创建一个项目文件夹,并在该目录下运行npm init命令进行初始化。除项目名称外,其余选项保持默认一路确认即可。执行完毕后,文件夹内将生成一个package.json文件。


// package.json
{
 "name": "test",
 "version": "1.0.0",
 "description": "",
 "main": "index.js",
 "scripts": {
 "test": "echo \"Error: no test specified\" && exit 1"
 },
 "author": "",
 "license": "ISC"
}

为了接收并处理HTTP请求,需要引入express包。在根目录下执行以下命令:


$ npm install express

此时已成功引入express包。接着,在根目录下创建一个index.js文件,其内容如下:


var express = require('express');
var app = express();

app.get('/', function(req, res) {
 res.send('hello world!');
});
app.listen(3000, function() {
 console.log('server now listening at 3000 port');
});

打开终端,使用Node.js编译并运行index.js文件。随后在浏览器中访问localhost:3000,即可看到“hello world!”输出:


$ node index.js
server now listening at 3000 port

项目初始化与基础环境搭建

这表明我们已成功监听3000端口,并且能够使用JS处理HTTP请求。

数据库连接配置

连接数据库

本例使用MySQL数据库。为便于操作数据库,引入mysql包:


$ npm install mysql
npm WARN test@1.0.0 No description
npm WARN test@1.0.0 No repository field.

+ mysql@2.17.1
added 9 packages from 14 contributors and audited 134 packages in 4.145s
found 0 vulnerabilities

在index.js同级目录下创建一个db.js文件,专门用于处理数据库连接逻辑:


//db.js
var mysql = require('mysql');
var pool = mysql.createPool({ //连接信息
 host: "localhost",
 user: "root",
 password: "",
 database: "c#learn",
 port: "3306"
});

var sql = { 
 insert:'INSERT INTO teacher(name, username, email, sex) VALUES(?,?,?,?)',    
 update:'update teacher set name=?, username=?, email=?, sex=? where id=?', 
 delete: 'delete from teacher where id=?', 
 queryById: 'select * from teacher where id=?', 
 queryAll: 'select * from teacher'
};

function query(sql, data, callback) {
 pool.getConnection(function(err, connection) { 
 connection.query(sql, data, function(err, rows) {
  callback(err, rows);
  connection.release(); //释放连接
 });
 });
}
exports.query = query;
exports.sql = sql;

通过配置数据库连接信息获取pool对象,即可利用该对象对数据库进行操作。同时配置SQL语句,并将查询方法及SQL语句导出供其他模块调用。

后台接口实现与请求处理

提供后台接口

在index.js中导入db.js,并将HTTP请求与数据库操作对接:


var express = require('express');
var app = express();
var db = require('./db.js');

app.get('/', function(req, res) {
 res.header("Access-Control-Allow-Origin", "*");
 db.query(db.sql.queryAll, [], function(err, rows) {
  res.send(JSON.stringify(rows));
 });
});
这时再访问localhost:3000就能看我们teacher表中所有的记录了。
app.listen(3000, function() {
 console.log('server now listening at 3000 port');
});

项目初始化与基础环境搭建

此外,为了读取POST和PUT请求中的body信息,我们需要引入body-parser包:


$ npm install body-parser

使用bodyParser配置app:


//index.js
var express = require('express');
var db = require('./db.js');
var app = express();
var bodyParser = require('body-parser');

app.use(bodyParser.json());

此时即可通过req.body读取请求体内容。

完整代码:


var express = require('express');
var db = require('./db.js');
var app = express();
var bodyParser = require('body-parser');

app.use(bodyParser.json());

app.get('/', function(req, res) {
 res.header("Access-Control-Allow-Origin", "*");
 db.query(db.sql.queryAll, [], function(err, rows) {
  console.log('err', err, 'rows', rows);
  res.send(JSON.stringify(rows));
 });
});

app.get('/:id', function(req, res) {
 res.header("Access-Control-Allow-Origin", "*");
 db.query(db.sql.queryById, [req.params.id], function(err, rows) {
  res.send(JSON.stringify(rows));
 });
});

app.post('', function(req, res) {
 res.header("Access-Control-Allow-Origin", "*");
 console.log(req.body.name);
 var teacher = req.body;
 db.query(db.sql.insert, [teacher.name, teacher.username, teacher.email, teacher.sex], function(err, rows) {
  if (err) {
   res.status(500);
   res.send('insert error');
  } else {
   res.status(200);
   res.send('insert success');
  }
 });
});

app.put('/:id', function(req, res) {
 res.header("Access-Control-Allow-Origin", "*");
 var teacher = req.body;
 var array = [teacher.name, teacher.username, teacher.email, teacher.sex, req.params.id];
 db.query(db.sql.update, array, function(err, rows) {
  if (err) {
   res.status(500);
   res.send('update error');
  } else {
   res.status(200);
   res.send('update success');
  }
 });
});

app.delete('/:id', function(req, res) {
 res.header("Access-Control-Allow-Origin", "*");
 db.query(db.sql.delete, [req.params.id], function(err, rows) {
  if (err) {
   res.status(500);
   res.send('delete error');
  } else {
   res.status(200);
   res.send('delete success');
  }
 });
});

app.listen(3000, function() {
 console.log('server now listening at 3000 port');
});

总结

感觉算是理解了“语言只是工具”这句话。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章