不多說直接上代碼。。。
- 發出請求
<a href="/admin/category/edit?u_id={{category._id.toString()}}">修改</a>
2.響應請求
router.get('/category/edit',function(req,res){
var u_id=req.query.u_id;
console.log(u_id);
Categories.findOne({
_id:u_id
}).then(function (data) {
console.log("~~~~~~~~first page");
console.log(data);
res.render('admin/category_edit',{
userInfo:req.userInfo,
data:data
})
})
})
3.再次發出請求
{%extends 'layout.html' %}
{%block main%}
<ol class="breadcrumb">
<li><a href="/admin">管理首頁</a></li>
<li><span>編輯分類</span></li>
</ol>
<form method="post">
<div class="form-group" >
<label for="name">分類名稱--{{data.name}}</label>
<input type="text" class="form-control" id="name" placeholder="請輸入修改後的分類名稱" name="name">
</div>
<button type="submit" class="btn btn-info">提交</button>
</form>
{%endblock%}
4.再次響應請求
router.post('/category/edit',function(req,res){
//這是因爲在post之前,已經發送了get請求
var u_id=req.query.u_id;
var name=req.body.name;
console.log('u-----------id');
console.log(u_id);
Categories.findOne({
_id:u_id,
}).then(function(data){
if(name==data.name){
res.render('admin/success',{
userInfo:req.userInfo,
message:'修改成功',
url:'/admin/category'
});
return Promise.reject();
}else{
return Categories.findOne({
_id:{$ne:u_id},
name:name
})
}
}).then(function(someCate){
if(someCate){
res.render('admin/error',{
userInfo:req.userInfo,
message:'已經有了該類名'
})
return Promise.reject();
}else{
return Categories.updateOne({
_id:u_id
},{
name:name
})
}
}).then(function(){
res.render('admin/success',{
userInfo:req.userInfo,
message:'修改成功',
url:'/admin/category'
});
})
})
本人翻車在第二次發出請求時,寫了具體
url
這也寫的代價是拿不到上次請求時的參數。。。。