簡單的express restful設計以及實現(一) 代碼地址為: "github" 主要是漫長的填坑之旅,涉及到的內容有node express restful ,雖然沒有完全的但是也是要記錄下來, npm install npm start 這裡解釋下 'npm start'就是運行packa ...
簡單的express restful設計以及實現(一)
代碼地址為:github
主要是漫長的填坑之旅,涉及到的內容有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的設計了.