【问题标题】:error sending request to nodejs whit Express using postman?使用邮递员向nodejs whit Express发送请求时出错?
【发布时间】:2021-01-06 20:21:24
【问题描述】:

我正在尝试使用 NodeJs 在 MYSql 表中插入数据,Express 框架使用 POST 方法抛出 Postman。我得到一个错误。我不知道这是否与json的解析有关。或者我必须发送不同的。

从邮递员发送的Json(原始,JSON):

{
    "namel": "Teusaquillo",
    "area_2m": 6000,
    "parent": "chapinero"
}

当我发送请求时,我收到此错误:

<pre>SyntaxError: Unexpected token   in JSON at position 3<br> &nbsp; &nbsp;at JSON.parse (&lt;anonymous&gt;)<br> &nbsp; &nbsp;at parse (<mypaht>\nodeapi\node_modules\body-parser\lib\types\json.js:89:19)<br> &nbsp; &nbsp;at <mypaht>\node_modules\body-parser\lib\read.js:121:18<br> &nbsp; &nbsp;at invokeCallback (<mypaht>nodeapi\node_modules\raw-body\index.js:224:16)<br> &nbsp; &nbsp;at done (<mypaht>\node_modules\raw-body\index.js:213:7)<br> &nbsp; &nbsp;at IncomingMessage.onEnd (<mypaht>\node_modules\raw-body\index.js:273:7)<br> &nbsp; &nbsp;at IncomingMessage.emit (events.js:326:22)<br> &nbsp; &nbsp;at endReadableNT (_stream_readable.js:1252:12)<br> &nbsp`; &nbsp;at processTicksAndRejections (internal/process/task_queues.js:80:21)</pre>

错误的其他观点:

SyntaxError: Unexpected token   in JSON at position 3
    at JSON.parse (<anonymous>)
    at parse (<mypaht>\node_modules\body-parser\lib\types\json.js:89:19)
    at <mypaht>\node_modules\body-parser\lib\read.js:121:18
    at invokeCallback (<mypaht>\node_modules\raw-body\index.js:224:16)
    at done (<mypaht>\node_modules\raw-body\index.js:213:7)
    at IncomingMessage.onEnd (<mypaht>\node_modules\raw-body\index.js:273:7)
    at IncomingMessage.emit (events.js:326:22)
    at endReadableNT (_stream_readable.js:1252:12)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)

这是 index.js 文件:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const mysql = require('mysql');
 
app.use(bodyParser.json());
 
//create database connection
const conn = mysql.createConnection({
  ...
});
 
//connect to database
conn.connect((err) =>{
  ...
});     

app.post('/api/locations',(req, res) => {
  let data = {namel: req.body.namel, area_2m: req.body.area_2m, parent: req.body.parent};  
  let sql = "INSERT INTO location SET ?";
  let query = conn.query(sql, data,(err, results) => {
    if(err) throw err;
    res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
  });
});

这是我要填写的表格:

CREATE TABLE `location` (
  `namel` char(100) NOT NULL,
  `area_2m` int(11) DEFAULT NULL,
  `parent` char(100) DEFAULT NULL,
  PRIMARY KEY (`namel`),
  KEY `parent` (`parent`),
  CONSTRAINT `location_ibfk_1` FOREIGN KEY (`parent`) REFERENCES `location` (`namel`)
) 

感谢您的帮助。谢谢!

【问题讨论】:

  • 您是否尝试在其他工具中发送请求?比如失眠。只是为了排除工具的影响。
  • 你的问题解决了吗?
  • 在失眠中我得到这个错误。 SyntaxError:JSON.parse () 位置 2 处的 JSON 中的意外标记
  • @JRichardsz 还没有。我进行了调试,错误出现在 ge 进入函数之前
  • 你能试试这个curl -d '{"key1":"value1", "key2":"value2"}' -H "Content-Type: application/json" -X POST http://localhost:3000/data吗??

标签: node.js json express post postman


【解决方案1】:

在邮递员中确保选择 JSON (application/json)

【讨论】:

    【解决方案2】:

    查询时传递的数据应该是一个数组吗?

    const express = require('express');
    const bodyParser = require('body-parser');
    const app = express();
    const mysql = require('mysql');
     
    app.use(bodyParser.json());
     
    //create database connection
    const conn = mysql.createConnection({
      ...
    });
     
    //connect to database
    conn.connect((err) =>{
      ...
    });     
    
    app.post('/api/locations',(req, res) => {
      // use destruction for easy reading
      let { namel, area_2m, parent } = req.body;
      // use mysql format to build query
      let sql = "INSERT INTO location SET ?";
      let value = [namel, area_2m, parent]
      let queryString = mysl.format(sql, value)
      let query = conn.query(queryString,(err, results) => {
        if(err) throw err;
        res.send(JSON.stringify({"status": 200, "error": null, "response": results}));
      });
    });
    

    【讨论】:

      【解决方案3】:

      在我的情况下,这是由于额外的空白而发生的。一旦我摆脱了属性之间以及左括号和第一个键/属性之间的所有额外空格,它就起作用了。

      我正在使用 express 运行 NodeJS,我猜 express.json 会引发错误,而不是修剪掉额外的空白,即使 json 中的额外空白是完全有效的 json。

      【讨论】:

        猜你喜欢
        • 2022-01-23
        • 2018-10-16
        • 1970-01-01
        • 2021-05-23
        • 2020-11-15
        • 1970-01-01
        • 1970-01-01
        • 2020-11-16
        • 1970-01-01
        相关资源
        最近更新 更多