用js简单提供增删改查接口

栏目: JavaScript · 发布时间: 5年前

内容简介:本周写实验,需要提供简单的后台接口对数据库进行增删改查,以前写后台只用过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

用js简单提供增删改查接口

这说明我们已经监听了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');
});

用js简单提供增删改查接口

另外,为了读取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');
});

总结

感觉算是理解了语言只是 工具 这句话.


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

破茧成蝶:用户体验设计师的成长之路

破茧成蝶:用户体验设计师的成长之路

刘津、李月 / 人民邮电出版社 / 2014-7 / 69.00

市面上已经有很多专业的用户体验书籍,但解决用户体验设计师在职场中遇到的众多现实问题的图书并不多见。本书从用户体验设计师的角度出发,系统地介绍了其职业生涯中的学习方法、思维方式、工作流程等,覆盖了用户体验设计基础知识、设计师的角色和职业困惑、工作流程、需求分析、设计规划和设计标准、项目跟进和成果检验、设计师职业修养以及需要具备的意识等,力图帮助设计师解决在项目中遇到的一些常见问题,找到自己的职业成长......一起来看看 《破茧成蝶:用户体验设计师的成长之路》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具