繁体   English   中英

将接收到的 Koajs CSV 文件转换为数组/对象

[英]Convert a received Koajs CSV file to array/object

我正在使用 Strapi 构建一个 api 并尝试添加一个导入/导出功能。 导出完成。 但是由于我是 js 新手,我不确定在实现导入过程时如何处理文件。

这就是我从请求中获取文件的方式:

var file = ctx.request.files.file;

这是 console.log(file) 输出:

File {
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  size: 127,
  path: '/tmp/upload_3f202079094c364546a9d4a792a1d5f5',
  name: 'declaracion.csv',
  type: 'text/csv',
  hash: null,
  lastModifiedDate: 2020-10-30T11:37:37.093Z,
  _writeStream: WriteStream {
    _writableState: WritableState {
      objectMode: false,
      highWaterMark: 16384,
      finalCalled: true,
      needDrain: false,
      ending: true,
      ended: true,
      finished: true,
      destroyed: true,
      decodeStrings: true,
      defaultEncoding: 'utf8',
      length: 0,
      writing: false,
      corked: 0,
      sync: false,
      bufferProcessing: false,
      onwrite: [Function: bound onwrite],
      writecb: null,
      writelen: 0,
      afterWriteTickInfo: null,
      bufferedRequest: null,
      lastBufferedRequest: null,
      pendingcb: 0,
      prefinished: true,
      errorEmitted: false,
      emitClose: false,
      autoDestroy: false,
      bufferedRequestCount: 0,
      corkedRequestsFree: [Object]
    },
    writable: false,
    _events: [Object: null prototype] {},
    _eventsCount: 0,
    _maxListeners: undefined,
    path: '/tmp/upload_3f202079094c364546a9d4a792a1d5f5',
    fd: null,
    flags: 'w',
    mode: 438,
    start: undefined,
    autoClose: true,
    pos: undefined,
    bytesWritten: 127,
    closed: true,
    [Symbol(kCapture)]: false,
    [Symbol(kIsPerformingIO)]: false
  },
  [Symbol(kCapture)]: false
}

任何想法将文件转换为数组或对象?

您可以使用csv-parser来实现这一点,他们的文档具有足够的描述性,但我会在 Strapi 的上下文中将其写下来。

  1. 导出一个可以重用于所有 csv 导入的函数

 const fs = require('fs'); const csv = require('csv-parser'); function parseCsv(filePath) { const results = []; return new Promise(resolve => { fs.createReadStream(filePath) .pipe(csv()) .on('data', data => results.push(data)) .on('end', () => { resolve(results); }); }); } module.exports = parseCsv;

  1. 每当您必须处理 csv 时,导入和重用导出的函数

 const parseCsv = require('.pathToExportedFunction/parseCsv'); const myCsv = await parseCsv('filePath.csv'); console.log(myCsv);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM