Node.js приложение для принятия JSON от пользователя, манипулирования и сохранения в MSSQL - PullRequest
0 голосов
/ 26 февраля 2020

Я застрял. Я думал, что моя цель будет прямой, но мне не хватает какой-то ключевой части. Я пытаюсь создать сайт, который может принимать файл JSON от конечного пользователя. После того, как файл будет предоставлен, я хочу объединить эти данные с данными из веб-ресурса, а затем взять полученный сглаженный JSON и записать его в таблицу базы данных. Первый прототип проекта был построен на одной HTML странице с некоторыми JavaScript, и мне удалось получить результат так, как я хотел. Затем я попытался преобразовать его в сервер node.js, чтобы использовать API для записи результирующего JSON на сервер SQL. Хотя проблема, с которой я обращаюсь за помощью, не связана с этими шагами, я просто хотел поделиться, что есть некоторые сложности asyn c, которые могут быть мутными. Я попытался создать страницу HTML, которая принимает файл, и с помощью express попытался захватить этот файл, но я не могу найти правильную комбинацию промежуточного программного обеспечения и другого кода для загрузки файла JSON в объект, чтобы я мог передать его в свою существующую функцию, чтобы манипулировать им, а затем передать его в функцию, чтобы записать его в SQL с помощью хранимой процедуры. Итак, вот что у меня есть для моего индекса. js

const express = require("express");
const app = express();
const fileUpload = require('express-fileupload');
const bodyParser = require("body-parser");
const path = require("path");

app.use(express.urlencoded({
  extended: false
}));
app.use(express.json());
app.use(fileUpload());
app.post('/upload', function(req, res) {
  if (!req.files || Object.keys(req.files).length === 0) {
    return res.status(400).send('No files were uploaded.');
  }
  let jsonFile = req.body.sampleFile;
  console.log(jsonFile);
  let parsed = JSON.parse(jsonFile);
  console.log
  res.send("blank page");
});

app.get('/', function(req, res) {
  res.sendFile(path.join(__dirname + '/minimalIndex.html'));
});
const webserver = app.listen(5000, function() {
  console.log('Express web server is running..');
});

и HTML, который он использует, это

<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>Static Index.html</title>
</head>

<body>
  <form ref='uploadForm' id='uploadForm' action='/upload' method='post' encType="multipart/form-data">
    <input type="file" name="sampleFile" />
    <input type='submit' value='Upload!' />
  </form>
</body>

</html>

В файле console.log отображается значение undefined. Сбой JSON Parse из-за неверной строки JSON. Мне удалось сохранить файл локально, но это кажется ненужным. Может кто-нибудь сказать, что мне не хватает?

1 Ответ

0 голосов
/ 27 февраля 2020

Все правильно, кроме того, как вы пытаетесь получить файлы. Вы пробуете его с body, а с files. Примерно так

let jsonFile = req.files.sampleFile;
let parsed = JSON.parse(jsonFile.data.toString("utf-8"));

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...