在SailsJS中对CRUD使用DELETE方法

时间:2015-11-05 16:56:12

标签: node.js api rest sails.js crud

我在Sails中做了一个CRUD应用程序,但删除方法不能正常工作。

Homepage.ejs视图是一个简单的表单:

<form action="/todo" method="post">

  <input type="text" name="title">
  <br><br>
  <input type="text" name="description">
  <br><br>
  <button type="submit">Create</button>

</form>

<hr>

<ul>
  <% _.each(todos, function(todo){ %>
    <li style="<% if(!todo.done){ %>color: red;<% } %>"><b><%= todo.title %></b> - <%= todo.description %> </li><a href="/detail/<%= todo.id %>">Detail</a>
    <form action="/todo/<%= todo.id %>" method="post">
      <input type="hidden" name="_method" value="put">
      <button type="submit">Completed</button>
    </form>
    <form action="/todo/<%= todo.id %>" method="post">
      <input type="hidden" name="_method" value="delete">
      <button type="submit">Delete</button>
    </form>
  <% }) %>
</ul>

`

DELETE和findOne方法的ToDoController:

delete:function(req, res){
    ToDo.destroy(req.param('id')).exec(function(err, todo){
        if(err) return res.serverError();
        return res.redirect('/');
    });
},
findOne: function(req, res){
    ToDo.find(req.param('id')).exec(function(err, todos){
        if(err) return res.serverError();
        return res.view('details', { id: req.param('id'), title: req.param('title'), description:req.param('description')});
    });
}

路线:

'/': 'ToDoController.index',


'POST /todo'   : 'ToDoController.create',
  'PUT /todo/:id': 'ToDoController.update',
  'DELETE /todo/:id' : 'ToDoController.delete',
  'GET /detail/:id': 'ToDoController.findOne'

并且details.ejs查看:

<h1> ID task: <%= id %> </h1>
<h3>Title: <%= title %></h3>
<p> Task: <%= description %></p>

任何想法??

1 个答案:

答案 0 :(得分:2)

尝试使用控制台调试应用程序

delete:function(req, res){
    console.log(req.param('id'));
    ToDo.destroy(req.param('id')).exec(function(err, todo){
        console.log(todo); 
        if(err) return res.serverError();
        return res.redirect('/');
    });
}

如果仍有问题,则应报告控制台输出的内容。