接收json格式的httppost请求并使用restapi将其保存到mysql

r55awzrz  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(381)

我对javascript非常陌生,但我有一个restapi,我正在局域网上运行。我有一个mysql数据库,我正试图保存一个json格式的httppost主体。我的js代码会将数据打印为“result”,但是当它从 Postman 那里发送时不会保存它,但是如果我硬编码一个假条目为“var result={json format entries}”,那么它就可以保存到mysql。这是我的密码:

var http = require('http');
var express = require('express');
var bodyParser = require('body-parser');
const { parse } = require('querystring');
var mysql = require("mysql");
var app = express();
var port = process.env.port || 8080;

var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '*******',
  database : 'userInfo'
});
connection.connect(function(err) {
  if (err) throw err
  console.log('You are now connected with mysql database...')
})

app.post('/licence', function (req, res) {
    collectRequestData(req, result => {
      console.log(result);
      connection.query('INSERT INTO licence SET ?',result, function (error, 
results, fields) {
    if (error) throw error;
    res.end(JSON.stringify(results));
      });
     res.end(`Parsed data belonging to ${result.fname}`);
    });
});

function collectRequestData(request, callback) {
    const FORM_URLENCODED = 'application/json';
    if(request.headers['content-type'] === FORM_URLENCODED) {
        let body = '';
        request.on('data', chunk => {
            body += chunk.toString();
        });
        request.on('end', () => {
            callback(parse(body));
        });
    }
    else {
        callback(null);
    }
}

我很确定我不需要这句话“res.end( Parsed data belonging to ${result.fname} );" 但我想弄清楚的是如何将结果保存到mysql中的license表中。这就是console.log(result)打印的内容:{{{“hash”:“testhaaash”,“size”:13,“difficiency”:47,“time”:null,“timestamp”:null,“date”:null}':'}我认为这应该略有不同,但我不确定它应该是什么,也不确定如何更改它

v7pvogib

v7pvogib1#

在collectrequestdata中尝试更改

request.on('end', () => {
        callback(parse(body));
    });

request.on('end', () => {
        callback(JSON.parse(body));
    });

相关问题