我正在使用postgresql和node创建一个crud应用程序。我在将发布请求发送到服务器时遇到问题。我尝试在邮递员上测试响应数据,但json数据还有一些其他字符。

我尝试将数据直接插入应用程序中并且可以正常工作。我也尝试使用x-www-form-urlencoded,它可以正常工作。当我尝试使用原始邮递员过帐时出现问题。

const express = require('express');
const app = express();
const pg = require("pg");
const bodyParser = require('body-parser');

app.use((req, res, next) => {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content, Accept, Content-Type, Authorization');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
    next();
});

app.use(bodyParser.urlencoded({ extended: true }));

app.use(bodyParser.json());

const connectionString = "postgres://postgres:dennis@localhost:5432/School";
const pool = new pg.Pool({
    connectionString: connectionString
});

// app.use(express.json());

app.get('/', (req, res, next) => {

    pool.connect((err, client, done) => {
        if (err) {
            console.log("not able to connect " + err);
            res.status(400).send(err);
        }
        client.query("select * from student where id= $1", [1], (err, result) => {
            done();
            if (err) {
                console.log(err);
                res.status(400).send(err);
            }
            res.status(200).send(result.rows);
        })
    })
})

app.get('/students', (req, res, next) => {
    pool.connect((err, client, done) => {
        if (err) {
            console.log('error while connecting ' + err)
            res.status(400).send(err);
        }
        client.query("select * from student", (err, result) => {
            done();
            if (err) {
                console.log(err)
                res.status(400).send(err)
            }
            res.status(200).send(result.rows)
        })
    })
})

app.post('/add', (req, res, next) => {
    pool.connect((err, client, done) => {
        if (err) {
            console.log(err)
            return res.status(400).send('could not connect ' + err);
        }

        client.query("insert into student (id, name, rollnumber) values($1, $2, $3)", [req.body.id, req.body.name, req.body.rollnumber], (err, result) => {
            done();
            if (err) {
                return console.log(err)
            }

            res.json({
                message: req.body
            })
        })
    })
})

app.listen(4000, () => {
    console.log('working');
})


这就是我从邮递员的req.body中得到的。 json数据具有一些有趣的字符。

{
    "message": {
        "{\r\n        \"id\": \"1\",\r\n        \"name\": \"jjjj\",\r\n        \"rollnumber\": \"7788\"\r\n    }": ""
    }
}


这就是我希望得到的{"id": "1", "name": "jjj", "rollnumber": "7788"}

最佳答案

请更改请求的内容类型。现在,您以文本格式发送它,但是您需要以json格式发送它。
javascript -  postman 中的响应数据还有一些其他字符-LMLPHP

07-26 08:42
查看更多