node用express寫後端restful介面實戰六:資料庫的增刪改查:根據請求引數查詢單篇文章、修改單篇文章、刪除單篇文章、
這一節要來完成檢視
、修改
、刪除
三個介面。這三個介面有一定的的相似性,再有了前面課程的基礎後,相信咱們能順利的搞定他們。
查詢
先來做檢視一篇文章的介面,開啟資料庫看看,所有的記錄第一個欄位,都是 id
,而且這個 id
是自增的,永遠不會重複的。如果想查詢到一篇文章,最好的方法,就是使用這個唯一的 id
值來找到它。
router.get('/:id', async function (req, res, next) {
res.json({id: req.params.id});
});
那麼我們定義的路由的時候,就在 /
後面加上一個 :id
。這樣定義後,表示這裡可以接受一個 文章id
Postman
,當請求的路徑是 http://localhost:3000/articles/4 這種格式的時候,這裡的 4
,就會對應到路由上的 :id
了。
接在就是要想辦法將這個 id
給取到,使用的方法是用 req.params.id
。使用 res.json
輸出一下看看。
果然可以看到使用者傳過來 4
這個 id 了。
接受到 id
後,在模型中呼叫 findByPk
。 就可以在 Articles
表中找到當前文章,還是輸出 json
就好了。
router.get('/:id', async function (req, res, next) { var article = await models.Article.findByPk(req.params.id); res.json({article: article}); });
Tips:
findByPk
,這裡的Pk
是Primary Key
也就是主鍵
的縮寫。一般每個表都有個主鍵
,如果沒有特殊命名,一般來說就是id
欄位。
開啟 Postman
,再來來測試一下。確實可以拿到當前文章
修改
router.put('/:id', async function (req, res, next) { var article = await models.Article.findByPk(req.params.id); article.update(req.body); res.json({article: article}); });
修改介面和剛才的查詢介面類似,需要注意的是這裡是 put
請求。也是要接受一個 id
,查詢到到當前文章以後,使用 update
方法來修改資料。最後返回被修改過的文章就好了。
重新整理資料庫,當前記錄確實被修改了
刪除
router.delete('/:id', async function (req, res, next) {
var article = await models.Article.findByPk(req.params.id);
article.destroy();
res.json({msg: '刪除成功'});
});
最後一個介面,刪除資料。先使用新增介面,胡亂新增一條新資料,然後通過介面來刪除它。這裡使用的請求方式是 delete
。也是查詢到當前文章後,直接呼叫 destroy
方法刪掉它。因為文章已經被刪除了,也沒啥好返回的了,就簡單的返回一個 msg: '刪除成功'
好了。
總結
基礎的 CURD
四個介面,也就這麼點內容了。需要重點注意的是他們的請求方式:
路由 | 請求方式 | 含義 |
---|---|---|
/articles | get | 查詢所有文章 |
/articles/:id | get | 查詢指定 id 的文章 |
/articles | post | 新增文章 |
/articles/:id | put | 編輯指定 id 的文章 |
/articles/:id | delete | 刪除指定 id 的文章 |
大家可以觀察下,他們有些路徑是一模一樣的,只是請求的方式不同,實際對應的路由方法也就不同了。這種寫法的路由就是符合 Restful
風格的路由。