首页 > 解决方案 > 即使在Nodejs中进行url编码后,请求正文也没有获取数据,如何解决?

问题描述

我也安装了 body-parser 模块,但没有工作。请建议如何解决这个问题?

我的代码部分如下。

我的 index.js

const express = require("express");
const ejs = require("ejs");

const app = new express();
app.set("view engine", "ejs");

app.use(express.static("public"));

const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

//db connection
const mongoose = require("mongoose");
mongoose
  .connect("mongodb://localhost/cryptoAssets")
  .then(() => console.log("Connected"))
  .catch((err) => console.log(err));

//models
const Coin = require("./models/Coin");

//global.title = "Crypto Assets"

app.use(function (req, res, next) {
  console.log(req);
  res.locals.title = "Marker"; //To set website title
  req.active = req.path; // [0] will be empty since routes start with '/'
  if (req.length === 0) req.active = "Home";
  next();
});

//controllers
const homeController = require("./controllers/home");
const aboutController = require("./controllers/about");
const contactController = require("./controllers/contact");
const portfolioController = require("./controllers/portfolio");
const servicesController = require("./controllers/services");
const teamController = require("./controllers/team");
const ratesCalculatorController = require("./controllers/ratesCalculator");

//routes
app.get("/", homeController);
app.get("/home", homeController);
app.get("/about", aboutController);
app.get("/contact", contactController);
app.get("/portfolio", portfolioController);
app.get("/services", servicesController);
app.get("/team", teamController);
app.get("/ratesCalculator", ratesCalculatorController);

app.get("/posts/newCoin", (req, res) => {
  res.render("newCoin", { activestate: req.active });
});

app.post("/posts/storeCoin", (req, res) => {
  console.log("----------------------------");
  console.log(req.body);
  console.log("----------------------------");

  //await Coin.create(req.body);
  //res.redirect("/");
});

app.listen(4000, () => {
  console.log("App listening on port: 4000");
});

我的币.js

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const CoinSchema = new Schema({
  coinName: String,
  coinDescription: String,
});

const Coin = mongoose.model("Coin", CoinSchema);
module.exports = Coin;

我的新硬币模板:

<!DOCTYPE html>
<html lang="en">

  <%- include('layouts/head'); -%>
  <body>
  
  <%- include('layouts/topbar'); -%>
  
  <%- include('layouts/header'); -%>
  <main id="main">

    <!-- ======= Contact Section ======= -->
    <section id="contact" class="contact">
      <div class="container" data-aos="fade-up">

        <div class="section-title">
          <h2>Calculate currency</h2>
          <h3><span>Rates Calculator</span></h3>
          <p>You can calculate your currency and crypto coin exchnage rate here</p>
        </div>

        

          <div class="row w-25 mx-auto">
            <form action="/posts/storeCoin" method="POST" role="form" class="php-email-form">
              <!--<div class="row">
                 <div class="col form-group">
                    <select id="coin" class="form-control" name="coin" required>
                        <option value="" disabled selected>- Select Cryptocurrency -</option>
                        <option value="saab">Saab</option>
                        <option value="opel">Opel</option>
                        <option value="audi">Audi</option>
                    </select>
                  </div>
              </div>-->
              <div class="col">
                <div class="col form-group">
                  <input type="text" name="coin" class="form-control" id="coin" placeholder="coin name" required>
                </div>
                <div class="form-group">
                  <textarea class="form-control" id="description" name="description" rows="5" placeholder="Description"></textarea>
                </div>
              </div>
              <div class="my-3">
                <div class="loading">Loading</div>
                <div class="error-message"></div>
                <div class="sent-message">Calculated Value. Thank you!</div>
              </div>
              <div class="text-center"><button type="submit">Add to List</button></div>
            </form>
          </div>

        

      </div>
    </section><!-- End Contact Section -->

  </main><!-- End #main -->
  <%- include('layouts/footer'); -%>

</body>

</html>

当我提交表单时,请求正文为空。表单数据显示在 chrome 菜单中,但正文为空。

标题数据

我也安装了 body-parser 模块,但没有工作。请建议如何解决这个问题?

标签: node.jsexpressbody-parser

解决方案


推荐阅读