簡體   English   中英

req.body在郵政快遞節點上未定義

[英]req.body undefined on post express nodejs

  <form name="tld_ingest" method="POST" enctype="multipart/form-data"> <div class="form-row"> <div class="form-group col-sm-2"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Application Name</label> <input type="text" class="form-control" id="namel" name="namel" placeholder="Application Name"> </div> <input type="submit" id="runall" formaction="/runAll" class="btn btn-primary btn-sm nine" style="margin-left: 40%; width: 60px; height: 35px; margin-top: 32px;" value="Run All" /> </div> <div class="form-row"> <div class="form-group col-sm-2"> <label for="inputEmail4">Use Case</label> <select class="form-control" id="mof" name="mof"> <option value="s3">S3</option> <option value="db">Database</option> <option value="file">File</option> </select> </div> <div class="form-check seven" style="margin-left:8%; margin-top:25px;"> <input class="form-check-input" type="radio" name="radio" id="radio" value="option2"> <label class="form-check-label" for="exampleRadios2" style="overflow-wrap: normal;white-space: nowrap;"> Ignore in-line DQ </label> </div> <!-- <input type="button" id="btnloading" class="btn btn-primary btn-sm eight" style="margin-left: 23%; width: 60px; height: 35px; margin-top: 35px;" onclick="run_button()" value="Run" /> --> </div> <div class="form-row fifth" id="area3"> <div class="form-group col-sm-2"> <label for="line" style="overflow-wrap: normal;white-space: nowrap;">Line of Business</label> <input type="text" class="form-control" id="line" name="line" placeholder="Insights & Data"> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Distributed To</label> <select class="form-control" id="dist" name="dist"> <option>EDL-WLDS</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4">Environment</label> <select class="form-control" id="env" name="env"> <option>UAT</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> </div> <div class="form-row fifth" id="area4"> <div class="form-group col-sm-2"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Select Tool</label> <select class="form-control" id="data" name="data"> <!-- <option>Abinitio</option> <option>Spark</option> --> <option>Talend Data Fabric</option> </select> </div> <div class="form-group col-sm-2 cord"> <label for="inputAddress" style="overflow-wrap: normal;white-space: nowrap;">Source Name</label> <input type="text" class="form-control" id="source" name="source" placeholder="Source Name"> </div> <!-- <div class="form-group col-sm-2 cord"> <label for="inputAddress">Line of Business</label> <select class="form-control"> <option>Insights & Data</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> --> <div class="form-group col-sm-2 cord"> <label for="inputAddress" style="overflow-wrap: normal;white-space: nowrap;">Source Owner</label> <input type="text" class="form-control" id="own" name="own" placeholder="Source Owner"> </div> </div> <div class="form-row third" id="area1"> <div class="form-group col-sm-2"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">AWS Access Key</label> <input type="text" class="form-control" id="key" name="key" placeholder="Access Key"> </div> <div class="form-group col-sm-2 cord"> <label for="password" style="overflow-wrap: normal;white-space: nowrap;">AWS Secret Key</label> <input type="password" class="form-control" id="secret" name="secret" placeholder="Secret Key"> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">AWS Bucket Name</label> <input type="text" class="form-control" id="bucket" name="bucket" placeholder="Bucket Name"> </div> </div> <div class="form-row third" id="area2"> <div class="form-group col-sm-2 "> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Key</label> <input type="text" class="form-control" id="fkey" name="fkey" placeholder="File Name"> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Delimiter</label> <input type="text" class="form-control" id="delim" name="delim" placeholder="Pipe"> </div> <div class="form-group col-sm-2 cord"> <label for="header" style="overflow-wrap: normal;white-space: nowrap;">Is Header Present?</label> <select class="form-control" id="opt" name="opt"> <option value="yes">Yes</option> <option value="no">No</option> </select> </div> </div> <div class="form-row third" id="area2"> <div class="form-group col-sm-2 key" style="display:none;"> <label for="header" style="overflow-wrap: normal;white-space: nowrap;">comma separated header</label> <input type="text" class="form-control" id="text9" name="text9" placeholder="Header Name"> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Target Table Name</label> <input type="text" class="form-control" id="text0" name="text0" placeholder="Hive Table Name"> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Target Database Name</label> <input type="text" class="form-control" id="text03" name="text03" placeholder="Database Name"> </div> </div> <button type="button" class="btn btn-primary btn-sm third">Cancel</button> <input type="submit" formaction="/submit" id="submit" class="btn btn-primary btn-sm third" style="float:right; margin-right: 37%; display: none;" value="Save & Run" /> <div class="form-row sixth" id="area3" style="display:none;"> <div class="form-group col-sm-2"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Line of Business</label> <input type="text" class="form-control" id="lob" name="lob" placeholder="Insights & Data"> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Distributed To</label> <select class="form-control" id="distr" name="distr"> <option>EDL-WLDS</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4">Environment</label> <select class="form-control" id="envir" name="envir"> <option>UAT</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> </div> <div class="form-row sixth" id="area4" style="display:none;"> <div class="form-group col-sm-2"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Select Tool</label> <select class="form-control" id="fab" name="fab"> <!-- <option>Abinitio</option> <option>Spark</option> --> <option>Talend Data Fabric</option> </select> </div> <div class="form-group col-sm-2 cord"> <label for="inputAddress" style="overflow-wrap: normal;white-space: nowrap;">Source Name</label> <input type="text" class="form-control" id="srcn" name="srcn" placeholder="Source Name"> </div> <!-- <div class="form-group col-sm-2 cord"> <label for="inputAddress">Line of Business</label> <select class="form-control"> <option>Insights & Data</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> --> <div class="form-group col-sm-2 cord"> <label for="inputAddress" style="overflow-wrap: normal;white-space: nowrap;">Source Owner</label> <input type="text" class="form-control" id="owner" name="owner" placeholder="Source Owner"> </div> </div> <div class="form-row fourth" id="area11" style="display:none;"> <div class="form-group col-sm-2"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Input File Path</label> <input type="text" class="form-control" id="text1" name="text1" placeholder="Path"> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">File Name</label> <input type="text" class="form-control" id="text2" name="text2" placeholder="File Name"> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Delimiter</label> <input type="text" class="form-control" id="text3" name="text3" placeholder="Delimiter"> </div> </div> <div class="form-row fourth" id="area11" style="display:none;"> <div class="form-group col-sm-2"> <label for="header" style="overflow-wrap: normal;white-space: nowrap;">Is Header Present?</label> <select class="form-control" id="arc" name="arc"> <option value="yes">Yes</option> <option value="no">No</option> </select> </div> <div class="form-group col-sm-2 key cord" style="display:none;"> <label for="header" style="overflow-wrap: normal;white-space: nowrap;">comma separated header</label> <input type="text" class="form-control" id="sep" name="sep" placeholder="Header Name"> </div> <div class="form-group col-sm-2 cord"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Target Table name</label> <input type="text" class="form-control" id="targetb" name="targetb" placeholder="Hive Name"> </div> </div> <div class="form-row fourth" id="area11" style="display:none;"> <div class="form-group col-sm-2"> <label for="inputEmail4" style="overflow-wrap: normal;white-space: nowrap;">Target Database name</label> <input type="text" class="form-control" id="targetdb" name="targetdb" placeholder="Database Name"> </div> </div> <button type="button" class="btn btn-primary btn-sm fourth" style="display:none;">Cancel</button> <input type="submit" id="submit1" formaction="/file" name="save_button" class="btn btn-primary btn-sm fourth" style="float:right; margin-right: 37%;" value="Save & Run" /> 

我正在嘗試向數據庫提交表單。 值不提交,而是在數據庫上我未定義。 基本上我的req.body是未定義的,並且不會傳遞值。

 var express = require('express'); var bodyParser = require('body-parser'); var app = express(); var mysql = require('mysql'); var http = require('http'); //var formidable = require("express-formidable"); var path = require("path"); var shell = require('shelljs'); var formidable = require('formidable'); app.use(express.static('Project')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); var mysqlConnection = getConnection(); function getConnection() { return mysql.createConnection({ host: 'localhost', user: 'root', port: '3306', database: 'abc', multipleStatements: true }); } app.post('/submit', (req, res) => { console.log("entered"); console.log('line', req.body.line); var form = new formidable.IncomingForm(); var application = req.body.namel; console.log("appli", req.body.namel); var useCase = req.body.mof; console.log("value in use case", req.body.mof); var line = req.body.line; var accessKey = req.body.key; var distributed = req.body.dist; console.log("distributed", req.body.dist); var environment = req.body.env; console.log("envir", req.body.env); var tool = req.body.data; var sname = req.body.source; console.log("source", req.body.source); var owner = req.body.own; var secretKey = req.body.secret; var bucketName = req.body.bucket; var fileName = req.body.fkey; var delimiter = req.body.delim; delimiter = '|'; var comma = req.body.text9; var header = req.body.opt; var tableName = req.body.text0; console.log("fileName", fileName); console.log("delimiter", delimiter); console.log("header", header); console.log("tableName", tableName); var dbName = req.body.text03; var nextVal; var sql = 'select ifnull(max(id),0)+1 as nextJobId from talendfw'; var query = mysqlConnection.query(sql, (err, results) => { if (err) throw err; nextVal = results[0].nextJobId; console.log(nextVal); var queryString = "INSERT INTO talendfw (ID, Application_Name, t_key, t_value) VALUES('" + nextVal + "','" + useCase + "', 'line_of_business','" + line + "'), ('" + nextVal + "','" + useCase + "', 'distributed_to','" + distributed + "'), ('"+nextVal+"','" + useCase + "', 'environment','" + environment + "'),('"+nextVal+"','" + useCase + "', 'select_tool','" + tool + "'),('"+nextVal+"','" + useCase + "','source_name','" + sname + "'), ('"+nextVal+"','" + useCase + "', 'source_owner','" + owner + "'), ('"+nextVal+"','" + useCase + "', 'aws_access_key','" + accessKey + "'), ('"+nextVal+"','" + useCase + "', 'aws_secret_key','" + secretKey + "'), ('"+nextVal+"','" + useCase + "', 'aws_bucket_name','" + bucketName + "'), ('"+nextVal+"','" + useCase + "', 'key','" + fileName + "'), ('"+nextVal+"','" + useCase + "', 'delimiter','" + delimiter + "'), ('"+nextVal+"','" + useCase + "', 'is_header_present','" + header + "'), ('"+nextVal+"','" + useCase + "', 'comma_separated_header','" + comma + "'), ('"+nextVal+"','" + useCase + "', 'target_table_name','" + tableName + "'), ('"+nextVal+"','" + useCase + "', 'target_database_name','" + dbName + "')"; console.log("insert_query " + queryString); mysqlConnection.query(queryString, (err, results, fields) => { if (err) { console.log("Failed to insert data" + err) res.sendStatus(500); return; } else { console.log("Inserted the values to DB successfully. ready for next operation", results); shell_script(nextVal); } console.log("Operation completed"); }); 

請幫助我解決這個問題。 我使用express-formidable npm,而不是req.body,我使用的req.fields正常工作,但是與另一個使用強大npm的表單數據存在沖突。

您在表單元素上具有此屬性:

enctype="multipart/form-data"

這意味着您要發送的請求的內容類型是multipart / form-data 如果刪除它,則表單將使用默認的內容類型,即x-www-form-urlencoded Bodyparser應該能夠解析它。

如果你仍然想使用的multipart / form-data的 (你可以看看這個問題,關於什么是更好的),你必須處理以某種方式另一種形式。

順便說一下,您的代碼可能不適合SQL注入 在進行查詢時,我會非常小心使用字符串連接。 您也不必再使用body-parser來解析正文。 它已經合並到Express中,這意味着您可以

app.use(express.urlencoded({ extended: false }));
app.use(express.json());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM