从 csv 文件数据创建 json 对象作为节点 js 请求中的缓冲区

create json object from csv file data coming as buffer in request in node js

我正在处理来自使用 multercsv-parser 创建 json 对象的请求的 csv 文件数据。但不能长时间处理。请帮忙,thanks.following 是 csv 文件处理的例子。

const multer = require('multer');
const fs = require('fs')
const csv =  require('csv-parser')
const fileStorageEngine = multer.memoryStorage({
  destination: (req, file, cb) => {
    cb(null, './csv');
  }
  ,
  filename: (req, file, cb) => {
    cb(null, file.originalname);
  },
});
const upload = multer({storage:fileStorageEngine});
app.post('/uploadcsv',upload.single("upfile"),async(req,res)=>{
const file = req.file;
fs.createReadStream(`./csv/${file.originalname}`)
.pipe(csv())
.on("data",(data)=>console.log(data));
res.send("file uploaded")
})

这里我使用的是适合我的 fs 模块,但我不想将数据存储在文件中,而是想以块的形式处理来自 req.file.buffer 的缓冲区数据 我被困在这里请帮忙。因为存储文件和读取同一个文件会导致进程变慢,因为 csv 文件有数千个数据。

想法是从缓冲区创建一个可读流,而不是将其写入文件,如下所示:

const multer = require('multer');
const { Readable } = require('stream');
const fs = require('fs')
const csv =  require('csv-parser')
const fileStorageEngine = multer.memoryStorage({
  destination: (req, file, cb) => {
    cb(null, './csv');
  }
  ,
  filename: (req, file, cb) => {
    cb(null, file.originalname);
  },
});
const upload = multer({storage:fileStorageEngine});
app.post('/uploadcsv',upload.single("upfile"),async(req,res)=>{
const file = req.file;

const stream = Readable.from(file.buffer);

stream.pipe(csv()).on("data",(data)=>console.log(data));
res.send("file uploaded")
})