[API-d23] - 實戰開發 - 修改 TODO task API with mongoose
接上篇,我們已經可以拿到 todo list 了
也可以拿到特定的 todo task
再來我們就可以編輯特定的 todo task 了對吧?
不囉唆直接進入程式碼
routes/users.js
// Update a todo task
router.put('/:user_id/todos/:todo_id', function(req, res) {
var user_id = req.params.user_id;
var todo_id = req.params.todo_id;
var data = req.body;
TODO.update(
{ _id: todo_id, user_id: user_id },
{ $set: { content: data.content } },
function (err, num, raw, results) {
if (err) {
res.status(400).json(
{ error: "update data error" }
);
} else {
TODO.find({ _id: todo_id, user_id: user_id }, function (err, results) {
res.status(201).json(
results[0]
);
});
}
}
);
});
這次拿資料要拿三組: user_id, todo_id, 以及 data from req.body
var user_id = req.params.user_id;
var todo_id = req.params.todo_id;
var data = req.body;
body 的資料很簡單,就是欲修改的 content 的資料:
{ "content": "想修改的資料" }
再來,除了是使用 .update 方法以及同樣要下 WHERE 參數外, .update 方法還多了一個參數:
{ _id: todo_id, user_id: user_id },
{ $set: { content: data.content } },
$set 的意思等同於 SQL 語法中的 SET
如果沒有加 $set 變成下面這樣:
{ _id: todo_id, user_id: user_id },
{ content: data.content } ,
整個資料就會被洗掉,變成只有 { content: data.content }
因此有沒有加 $set 差很多哦
後面一樣是 callback 的處理
都寫好後,實際開 POSTMAN 試試看吧!
記得要使用 PUT
來丟 request
例子如下,我把原本的 buy milk 改成 buy milk and banana
這樣離完成 API 就不遠啦!
明天就稍微休息一下吧 XD