mysql - 无法 POST/api/dogs

标签 mysql node.js

我在nodejs中创建了一个基本项目,但是当我提交数据时,它说无法发布api/dogs。 https://vfs.cloud9.us-east-2.amazonaws.com/vfs/3199fe30e54d4e63aa04c42b20416f0e/preview/index.html用于现场测试
这是我的index.html

            <h1>Dogs</h1>
            <h2>Add a Dog</h2>
            <form action="/api/dogs" method="POST">
                    <label for="name">Enter Dog Name: </label>
                    <input type="text" id="name" name="name" autofocus />
                    <br/>
                    <label for="description">Enter Dog Description </label>
                    <textarea type="description" id="description" name="description" >
                    </textarea>
                    <input type="submit" value="Submit" />

创建一个名为 data 的新文件夹,并在该文件夹中创建一个名为 connection.js 的文件。该文件将导出一个数据库连接池。

exports.connectionPool = mysql.createPool({
connectionLimit:10,
host : 'localhost',
user : 'root',
password : 'root',
database : 'a1',
multipleStatements: true
});

在数据中创建另一个名为 setup.js 的文件。我们将使用此文件在数据库中设置所需的表。事实上,我们的数据库将只包含一张表。

const {
    connectionPool
} = require('./connection.js'); // requires a file in current directory

connectionPool.query('DROP TABLE IF EXISTS dogs;', (error, results) => {
    if (error) {
        console.log(error.message);
        process.exit();
    } else {
        console.log("Success: dog table dropped!");
    }
});

var createSql = "CREATE TABLE dogs (dog_id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, description TEXT NOT NULL, PRIMARY KEY (dog_id) );";
connectionPool.query(createSql, (error, results) => {
    if (error) {
        console.log(error.message);
        process.exit();
    } else {
        console.log("Success: dog table Created!");
    }
});

这是index.js代码

const {
  connectionPool
} = require('./data/connection.js');

var express = require('express');
var app = express();
var bodyParser = require('body-parser');

// Create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({
      extended: true
  })

  app.use(express.static('public'));
app.get('/', function (req, res) {
  res.sendFile(__dirname + "/" + "index.html");
})

app.post('/api/dogs', urlencodedParser, function (req, res) {
  // Prepare output in JSON format

  connectionPool.query("INSERT INTO dogs (name, description) VALUES ('" + req.body.name + "', '" + req.body.description + "');", (error, results) => {
      if (error) {
          console.log(error.message);
          process.exit();
      } else {
          console.log("Success: dog inserted");
      }
  });
  res.end(JSON.stringify(req.body));
})

app.get('/api/dogs', function (req, res) {
  connectionPool.query("SELECT * FROM dogs LIMIT " + req.query.offset + ", " + req.query.count, (error, results) => {
      if (error) {
          console.log(error.message);
          process.exit();
      } else {
          if (results === undefined || results.length == 0) {
              res.status(404).send("nothing found");
          } else {
              console.log(results);
              res.end(JSON.stringify(results));
          }
      }
  });
})

app.get('/api/dogs/id', function (req, res) {
  connectionPool.query("SELECT * FROM dogs where dog_id='" + req.query.id + "'", (error, results) => {
      if (error) {
          console.log(error.message);
          process.exit();
      } else {
          console.log(results);
          res.end(JSON.stringify(results));
      }
  });
})
var server = app.listen(8081, function () {
      var host = server.address().address
          var port = server.address().port

          console.log("Example app listening at http://%s:%s", host, port)
  })


[1]: https://vfs.cloud9.us-east-2.amazonaws.com/vfs/3199fe30e54d4e63aa04c42b20416f0e/preview/index.html

最佳答案

您的表单操作不完整,您必须调用绝对网址来击中您的后弯

<form action="http://localhost:8081/api/dogs" method="POST">

关于mysql - 无法 POST/api/dogs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58335224/

相关文章:

php - 在数据库中使用@符号

php - 在表中打印 mysql 查询的结果

php - 关于数据库连接类的想法

javascript - 导入模块 javascript node.js 的正确方法是什么

angularjs - mean.js 菜单 isPublic 不起作用

javascript - 使用异步等待自动 try catch 路由器 Controller

JavaScript 嵌套异步函数在操作后返回结果

php - 无法理解如何正确连接 mySQL 表

javascript - 如何使用随机字符串作为路由参数(ExpressJS)

mysql - 选择特定日期的数据