Тело парсер проблема с экспресс, реагировать.Проводка нулевых значений в базе данных - PullRequest
1 голос
/ 10 апреля 2019

Ошибка промежуточного программного обеспечения с body-parser: Данные сохраняются как объект, который позже вызывает / api / new для публикации в базе данных SQL.

Нет Проблемы с самим запросом, но данные имеют нулевые значения в базе данных.

Мои мысли:

  1. app.use (express.urlencoded ({ расширенный: правда })); имеет значение true, так как некоторые значения INT,

  2. Я пытался JSON.Stringify данных, прежде чем они будут отправлены на запрос POST. Не работал

  3. Также поиграл с заголовком

    // const config = { // заголовки: { // принимаем: "application / json", // "accept-language": "en_US", // "content-type": "application / x-www-form-urlencoded" //} //};

axios.post ("/ api / new", {newEntry}, config ...

  1. Я думаю, что проблема может быть связана с тем, что его router.post в моих api-маршрутах вместо app.post

    ```
         var newEntry = {
              First_Name: FirstName.toUpperCase(),
              Last_Name: LastName.toUpperCase(),
              Employ_ID: parseInt(EmployID),
              Problem: checkedValue,
              PhoneNumber: phoneNumber,
              Provider: domain
            };
            var stringNewEntry = JSON.stringify(newEntry);
    
            console.log("Right before Post");
            console.log(newEntry);
    
            axios
              .post(
                "/api/new",
               {newEntry},
                {
                  timeout: 10000
                }
              )
              .catch(error => {
                if (error.code === "ECONNABORTED") return "timeout";
              })
              .then(res => {
                console.log(newEntry);
                if (res === "timeout") {
                  console.log("Please Try Again");
                } else {
                  console.log("SUCCESS!");
                }
              });
          }
    ````
    

    Файл сервера

        const express = require("express");
        const app = express();
        var bodyParser = require('body-parser')
    
        const PORT = process.env.PORT || 3001;
        var routes = require("./routes/api-routes");
        // Define middleware here
    
        app.use(express.json());
        app.use(bodyParser.json());
        app.use(express.urlencoded({
          extended: true
        }));
    
        // Serve up static assets (usually on heroku)
        if (process.env.NODE_ENV === "production") {
          app.use(express.static("client/build"));
        }
        // Add routes, both API and view
        app.use(routes);
    
        // Start the API server
        app.listen(PORT, function() {
          console.log(`?  ==> API Server now listening on PORT ${PORT}!`);
        });
    

API-маршруты * * 1 034


    router.route("/api/new").post(function(req, res) {
  console.log("Data:");

  console.log(req.body.First_Name);

  var dbQuery =
    "INSERT INTO KioskInfo (First_Name,Last_name,Employ_ID,Problem,PhoneNumber,Provider) VALUES (?,?,?,?,?,?)";
  var dbQueryPermanent =
    "INSERT INTO KioskData (First_Name,Last_name,Employ_ID,Problem) VALUES (?,?,?,?)";
  var IgnoreQuery =
    "INSERT IGNORE INTO KioskInfo (First_Name,Last_name,Employ_ID,Problem,PhoneNumber,Provider) VALUES (?,?,?,?,?,?)";

  connection.query(
    dbQuery,
    [
      req.body.First_Name,
      req.body.Last_Name,
      req.body.Employ_ID,
      req.body.Problem,
      req.body.PhoneNumber,
      req.body.Provider
    ],
    function(err, result) {
      if (err) {
        connection.query(
          IgnoreQuery,
          [
            req.body.First_Name,
            req.body.Last_Name,
            req.body.Employ_ID,
            req.body.Problem,
            req.body.PhoneNumber,
            req.body.Provider
          ],
          function(IgnErr, IgnResult) {
            if (IgnErr) {
              throw IgnErr;
            } else {
              console.log("Duplicate Entry Ignored");
            }
          }
        );
      }
      //Learn to specify DUP ERR;
      console.log("Successfully Saved Into KioskInfo");
    }
  );

  connection.query(
    dbQueryPermanent,
    [
      req.body.First_Name,
      req.body.Last_Name,
      req.body.Employ_ID,
      req.body.Problem
    ],
    function(err, result) {
      if (err) throw err;
      console.log("Successfully Saved Into KioskData");
      res.end();
    }
  );
});

...