Как обработать файл .rar, содержащий очень большой файл json как на стороне клиента, так и на стороне сервера, а затем сохранить его в базе данных mongodb - PullRequest
0 голосов
/ 21 июня 2019

Я должен отправить файл .rar из браузера (реагировать-js).Затем мне нужно получить этот файл на стороне сервера (express-js), чтобы я мог выполнять над ним дальнейшие операции.Может ли кто-нибудь помочь мне с этим?

Я попытался использовать Multer (но я думаю, вот для загрузки файла).Я попытался использовать промежуточное ПО bodyParser из json и urlencoded, но они не обрабатывают мой запрос дальше и не передают его контроллеру.

На стороне клиента

sendData = () => {
        const data = new FormData();
        const { fileSelected, fileSelectedName } = this.state;
        data.append('file', fileSelected);
        if (fileSelectedName === 'THERM0001.rar') {
            fetch('http://localhost:3001/thermometer/postReadings', {
                method: 'POST',
                headers: { 'Content-Type': 'application/json' },
                // body: JSON.stringify({
                //     data: fileSelected,
                //     name: fileSelectedName
                // })
                body: data
            })
                .then(res => res.json())
                .then(resp => alert(resp.message));
        }
        else {
            alert(`There is no need for manual entry for ${fileSelectedName}.json`);
        }
    }

На стороне сервера:

import express from 'express';
import mongoose from 'mongoose';
import bodyParser from 'body-parser';
import cors from 'cors';
import router from './routes';

const app = express();
const port = 3001;

const mongoDB = 'mongodb://127.0.0.1/thermometer';

mongoose.connect(mongoDB, { useNewUrlParser: true });

let db = mongoose.connection;
db.on('error', console.error.bind(console, 'MongoDB connection error:'));

app.use(bodyParser.json({limit: '50mb', extended: true}));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
app.use(cors());

app.use('/thermometer/', router);
app.listen(port, () => console.log(`Example app listening on port ${port}!`));

SyntaxError: Неожиданный токен - в JSON в позиции 0 в JSON.parse () в createStrictSyntaxError (/Users/aditmodi/Desktop/thermometer-server/node_modules/body-parser/lib/types/json.js: 158: 10) при разборе (/Users/aditmodi/Desktop/thermometer-server/node_modules/body-parser/lib/types/json.js:83:15) в / Users / aditmodi / Desktop / thermometer-server / node_modules/body-parser/lib/read.js:121:18 at invokeCallback (/Users/aditmodi/Desktop/thermometer-server/node_modules/raw-body/index.js:224:16) at done (/ Users / aditmodi /Рабочий стол / сервер термометров / node_modules / raw-body / index.js: 213: 7) в IncomingMessage.onEnd (/Users/aditmodi/Desktop/thermometer-server/node_modules/raw-body/index.js:273:7)в IncomingMessage.emit (events.js: 197: 13) в endReadableNT (_stream_readable.js: 1129: 12) вprocessTicksAndRejected (внутренняя / process / next_tick.js: 76: 17)

...