Проблема с синтаксическим анализатором тела с помощью Express, React. Публикация нулевых значений в базе данных

#reactjs #express #body-parser

#reactjs #экспресс #синтаксический анализатор тела

Вопрос:

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

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

Мои мысли:

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

  2. Я попробовал JSON.Строковая обработка данных перед отправкой в 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-маршруты

 
    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();
    }
  );
});