2014-10-10 00:00

[API-d23] - 實戰開發 - 修改 TODO task API with mongoose

Github 參考

接上篇,我們已經可以拿到 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

image

這樣離完成 API 就不遠啦!

明天就稍微休息一下吧 XD

Share

comments powered by Disqus