博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
天坑之旅之--restful设计(express,mongoose)
阅读量:6677 次
发布时间:2019-06-25

本文共 5108 字,大约阅读时间需要 17 分钟。

简单的express restful设计以及实现(一)

代码地址为:

主要是漫长的填坑之旅,涉及到的内容有node express restful ,虽然没有完全的但是也是要记录下来,

npm install

npm start

这里解释下 'npm start'就是运行package.json里面script中的

"start": "node ./bin/www"

其他的很多程序的入口是 npm run dev也是同个道理

然后数据库是用的mongoose,查询的操作以及一些方法可以自行查阅,

表的内容如下(books.js):

var bookschema = new mongoose.Schema({book_pid:String,book_name:String,author:String,price:String,num:Number,//0在售,1下架,2预定,3展示state:String,describe:String,tel:Number,// user_id:String,create_date:{type:Date,dafault:Date.now}});

user.js

var userschema=new mongoose.Schema({
username:String,
password:String,
//0管理员,1用户,2游客
status:String
});

入口程序是routes,做路由的控制

//路由控制

module.exports = function (app) {    //获取所有用户    app.get('/users',User.getUsers);    //获取某个用户    app.get('/user/:id', User.getUser);    //删除某个用户    app.post('/userdel/:id', User.delUser);    //添加一个用户    app.post('/user', User.addUser);    //更新一个用户    app.put('/user/:id', User.updateUser);    //分页获取书    app.post('/book/get_books',User.getBooks);    //获取某一本书    app.post('/book/:id',User.getBook);    //添加一本书    app.post('/book/add_book', User.addBook);    //删除一本书    app.post('/book/del_book', User.delBook);    //更新一本书    // app.put('/book/:id',Book.updateBook);};

使用的全是post方法,也可以使用get,post,delect,put等

方法是在controller中定义的

//获取所有用户exports.getUsers= function(req, res) {    User.find({}, function (err, docs) {        if(err){            res.json({"status":"error","msg":"查找用户失败"});        }        res.json({"status":"success","data":docs});    })};//获取某一个用户exports.getUser= function(req, res) {    var id=req.params.id;    User.findOne({_id:id},function(err,doc){        if(err){            res.json({"status":"error"});        }else{            res.json({"status":"success","data":doc})        }    });};//删除某一个用户exports.delUser= function(req, res) {    var id=req.params.id;    User.remove({_id:id},function(err,doc){        if(err){            res.json({"status":"error"});        }else{            res.json({"status":"success"})        }    });};//添加一个用户exports.addUser= function(req, res) {    var username=req.body.username;    var password=req.body.password;    var newUser=new User(        {            username:username,            password:password        }    );    newUser.save(function(err){        if(err){            res.json({"status":"error"})        }else{            res.json({"status":"success"});        }    });};//更新某个用户exports.updateUser= function(req, res) {    var id=req.params.id;    var username=req.body.username;    console.log(username);    var password=req.body.password;    console.log(password);    // 修改记录    var conditions ={_id : id};    var update     ={$set : {username:username, password : password}};    var options    = {upsert : true};    User.update(conditions, update, options, function(error){        if(error) {            res.json({"status":"error"});        } else {            res.json({"status":"success"});        }    });};// 添加书籍exports.getBooks = function(req, res) {    var book_pid=req.body.book_pid;    var book_name=req.body.book_name;    var author=req.body.author;    var price=req.body.price;    var num=req.body.num;    var state=req.body.state;    var describe=req.body.describe;    var tel=req.body.tel;    var create_date=req.body.create_date;    var data=new Books(        {          book_pid:book_pid,          book_name:book_name,          author:author,          price:price,          num:num,          //0在售,1下架,2预定,3展示          state:state,          describe:describe,          tel:tel,          create_date:create_date        }    );    data.save(function(err){        if(err){            res.json({"status":"error"})        }else{            res.json({"status":"书籍已写入"});        }    });};// 分页获取书籍exports.addBook = function(req, res) {    var curr=req.body.curr;    //每页大小为10    //返回所有查询的结果    var query=Books.find({});    // 跳过前N个文档,返回其余的    query.skip((curr-1)*10);    // 限制返回结果的数量    query.limit(10);    //按照id添加的顺序倒序排列    //排序 键对应文档的键名, 值代表排序方向, 1 升序, -1降序    query.sort({'_id': -1});    //计算分页数据    query.exec(function(err,rs){        if(err){            res.send(err);        }else{            //计算数据总数            Books.find(function(err,result){                if(result.length%10>0){                    pages=result.length/10+1;                }else{                    pages=result.length/10;                }                jsonArray={data:rs,pages:pages};                res.json(jsonArray);            });        }    });};//删除一个书籍exports.delBook= function(req, res) {    var id=req.body.id;    Books.remove({_id:id},function(err,doc){        if(err){            res.json({"status":"error"});        }else{            res.json({"status":"success"})        }    });};//获取书籍详情exports.getBook = function(req, res) {    var id=req.body.id;    Books.findOne({_id:id},function(err,doc){        if(err){            res.json({"status":"error"});        }else{            res.json({"status":"success","data":doc.content})        }    });

进行过简单的测试,可能还有一点点的错误,但是基本上都是对的了.可以往数据库里面添加了,以及返回部分json,第二集的话可能会是完整版的,不过要等我认真的看一遍数据库的操作,以及一些restful的设计了.

转载于:https://www.cnblogs.com/binxchen/p/6550927.html

你可能感兴趣的文章
关于Lucene全文检索相关技术
查看>>
简单理解冒泡排序
查看>>
halcon算子翻译——fuzzy_measure_pairing
查看>>
二项式展开
查看>>
推荐系统-03-简单基于用户的推荐
查看>>
Android scaleType属性与ImagView中图片的显示的关系
查看>>
十、cent OS开启APR模式报错:configure: error: Found APR 1.3.9. You need version 1.4.3 or newer installed...
查看>>
八、阻塞等待异步结果FutureTask
查看>>
中文字符按拼音首字母排序(转)
查看>>
【mysql】一次有意思的数据库查询分析。
查看>>
Spring 框架中注释驱动的事件监听器详解
查看>>
C++获取window临时路径
查看>>
Python(面向对象编程—1)
查看>>
自己封装的数据通信服务组件DotNet.ServiceModel
查看>>
Docker创建虚机和swarm
查看>>
JSON入门学习
查看>>
一个很好的UML工具
查看>>
[转]无需看到你的脸就能认出你——实现Beyond Frontal Faces: Improving Person Recognition Using Multiple Cues...
查看>>
函数Curry化
查看>>
二进制补码,原码,反码和移码
查看>>