用js简单提供增删改查接口
栏目: JavaScript · 发布时间: 6年前
内容简介:本周写实验,需要提供简单的后台接口对数据库进行增删改查,以前写后台只用过php和java,因为比较容易,用js写的也比较快,所以这次想用js实现简单的增删改查接口。为了能够解析js,需要下载nodejs,下载完nodejs,创建一个文件夹,使用npm init初始化,除了填写名字,一路确定下去,在文件夹下就会多出一个package.json文件.为了接受并处理http请求,需要引入express这个包,在根目录下使用这个命令:
本周写实验,需要提供简单的后台接口对数据库进行增删改查,以前写后台只用过 php 和java,因为比较容易,用js写的也比较快,所以这次想用js实现简单的增删改查接口。
初始化
- 需要工具:nodejs
- 依赖:express,mysql,body-parser(这些都是npm的包)
为了能够解析js,需要下载nodejs,下载完nodejs,创建一个文件夹,使用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');
});
打开终端,使用nodejs编译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对象,就可以用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');
});
总结
感觉算是理解了语言只是 工具 这句话.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Node编写API接口,ajax实现增删改查
- mysql8+mybatis-plus3.1自动生成带lombok和swagger和增删改查接口 原 荐
- mongoose的增删改查
- JDBC实现简单增删改查
- Golang操作MySQL增删改查
- iOS CoreData (一) 增删改查
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据挖掘十大算法
(美)吴信东(Xindong Wu)、(美),库玛尔 ,(Vipin Kumar) / 李文波、吴素研 / 清华大学出版社 / 2013-5 / 39.00元
《世界著名计算机教材精选:数据挖掘十大算法》详细介绍了在实际中用途最广、影响最大的十种数据挖掘算法,这十种算法是数据挖掘领域的顶级专家进行投票筛选的,覆盖了分类、聚类、统计学习、关联分析和链接分析等重要的数据挖掘研究和发展主题。《世界著名计算机教材精选:数据挖掘十大算法》对每一种算法都进行了多个角度的深入剖析,包括算法历史、算法过程、算法特性、软件实现、前沿发展等,此外,在每章最后还给出了丰富的习......一起来看看 《数据挖掘十大算法》 这本书的介绍吧!
HTML 压缩/解压工具
在线压缩/解压 HTML 代码
HTML 编码/解码
HTML 编码/解码