iT邦幫忙

DAY 23
0

從無到有打造 RESTful API service系列 第 23

[API-d23] - 實戰開發 - 修改 TODO Task API With Mongoose

  • 分享至 

  • xImage
  •  

小弟的規劃表 - http://blog.kerkerj.in/blog/2014/11/01/planning/

好讀版 - http://blog.kerkerj.in/blog/2014/10/23/api-d23/

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

這樣離完成 API 就不遠啦!

明天就稍微休息一下吧 XD


上一篇
[API-d22] - 實戰開發 - 讀取 TODO Task API With Mongoose
下一篇
[API-d24] - 實戰開發 - 刪除 TODO Task API With Mongoose
系列文
從無到有打造 RESTful API service30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言