這是在前面練習的基礎上繼續學習發出的心得。在頁面刷出資料後想對某些內容執行刪除操作,這裡用到jquery的ajax,通過ajax傳入一個唯一的值,比如collection裡面的_id,然後在node處理常式裡面接收這個參數,調用remove方法執行刪除操作。具體代碼如下:
1、我的ajax代碼是寫在一個頁面當中。
$('.my-delete').click(function(){ var id=$(this).attr("data-id"); //在頁面當中我直接把資料的_id值刷出來賦給data-id $.ajax({ type:'post', url:"/msgDelete", data:{id:id}, success:function(data){ //以我的寫法,這裡success是沒有執行到的,直接跑到message處理常式,成功刪除就over了 if(data){ console.log('成功了啊'); } else{ console.log("傳回值為空白"); } } }); })
這裡處理url為"/msgDelete",因此需要修改app.js添加msgDelete的處理事件,我是在當前頁執行刪除操作,因此轉向頁面也是當前頁。
app.get('/msgDelete',message.del);app.post('/msgDelete',message.delMsg);
修改mesage.js裡面的del和delMsg方法如下所示。
exports.del = function (req,res){ res.render('home',{title:'Delete Message'})}exports.delMsg = function (req,res){ msgModel.remove({_id:req.body.id},function(err,data){ if(!err){ res.send('true');//刪除成功後返回true用於前端ajax的success函數接收的data,這裡send的資料格式可以根據需要自己定義 }else{ res.send('false'); } })}
這裡的delMsg是真是實現刪除操作的過程,remove()方法的兩個參數,第一個是條件,第二個是回呼函數,這裡我要刪除指定一條id的資料,通過
req.body.id來擷取前面頁面ajax傳入的參數,刪除完成之後,重新調用find方法尋找資料庫的資料,看看結果是不是正確的,docs為返回的數組列。
具體什麼刪除之後,相要把這個刪除的隱藏啊之類的就不寫了,需要的自己研究,反正傳回值都已經給出來了。