Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Express 4.0和Mysql问题以及PUT和DELETE请求_Mysql_Node.js_Express - Fatal编程技术网

Express 4.0和Mysql问题以及PUT和DELETE请求

Express 4.0和Mysql问题以及PUT和DELETE请求,mysql,node.js,express,Mysql,Node.js,Express,我正在尝试为todo应用程序开发一个简单的API。我对PUT请求有一个问题:当我使用postman(用于REST的chrome应用程序)时,请求很长,节点控制台显示[object,object]而不是请求中的值。此外,mysql数据库没有更新 路线: router.route('/todo/:todo_id') .put(function(req, res) { var input = JSON.parse(JSON.stringify(req.params)); var id

我正在尝试为todo应用程序开发一个简单的API。我对PUT请求有一个问题:当我使用postman(用于REST的chrome应用程序)时,请求很长,节点控制台显示
[object,object]
而不是请求中的值。此外,mysql数据库没有更新

路线:

router.route('/todo/:todo_id')
.put(function(req, res) {
    var input = JSON.parse(JSON.stringify(req.params));
    var id = req.params.id;
    var data = {
        todo_title: input.title,
        todo_description: input.description
    };
    db.query('UPDATE task SET ? WHERE todo_id = ?', [data,id], function(err, result) {
        if(err) throw err;
        console.log("Dane zostały uaktualnione: " + result);
    });
});
我对删除也有问题:

.delete(function(req, res) {
    db.query('DELETE FROM task WHERE todo_id=?', [req.params.todo_id], function(err, result) {
        if (err) throw err;
        console.log('usunieto: ' +result);
    });
});
模板:

<h1>Edit</h1>
    <% items.forEach(function(item) { %>
    <form action="/api/todo/<%= item.todo_id %>" method="PUT">      
        <label for="title">Nazwa zadania</lablel><br>
        <input name="title" type="text" value="<%= item.todo_title %>"><br>
        <label for="description">Opis zadania</label><br>
        <textarea name="description" value="<%= item.todo_description %>"></textarea><br>
        <input type="submit" value="SSij">
    <% }); %>
    </form>
编辑
纳兹瓦-扎达尼亚

奥皮斯·扎达尼亚


问题在哪里?

问题在于HTML表单只支持
GET
POST

至少有两种解决方案:

  • 由于您使用的是Express,因此有一个中间件允许您
    发布表单,然后在表单中有一个隐藏的输入字段、查询参数或自定义逻辑,指定用于路由目的的真正HTTP谓词

  • 改用XMLHTTPRequest发送表单,它支持
    GET
    POST
    PUT
    DELETE