爸爸解析第一个标头字段用引号呈现

时间:2019-05-26 18:01:35

标签: mongodb mongoose papaparse

我正在服务器上运行papa解析,以使用以下代码读取和解析csv文件:

function getData() {
    console.log("Started getData...");
    const file = fs.createReadStream(filePath);
    papa.parse(file, {
        header: true,
        complete: createRecord
    });
}

我完整的回调函数如下:

function createRecord(row, file) {
    records = row.data;
    console.log("Started createRecord...");
    records.forEach((record) => {
        console.log(record)
        Activity.create(record);
    });
}

然后将其写入MondoDB数据库。一切正常,除了由papa解析的第一个字段名称。上面console.log(record)调用的记录输出如下所示:

{
  'Activity_Date': '2018-08-28',
  Time_Start: '2018-08-28 20:20',
  Time_End: '2018-08-28 21:01',
  Duration: 0.027962963,
  Subject: 'CS410',
  Semester: 'Fall 2018',
  Week: 1,
  Task: 'Lectures',
  Day: 2
}

注意Activity_Date周围的引号。这导致Mongo忽略第一个字段,仅将其余字段提交到数据库。

尝试以不同方式编辑csv文件不会产生任何有用的结果。奇怪的是,如果我查看来自papa parse的元数据,它将为我提供没有qoutes的字段名称。

活动的Mongo模式如下:

const mongoose = require("mongoose");

const activitySchema = new mongoose.Schema({
    Activity_Date: String,
    Time_Start: String,
    Time_End: String,
    Duration: Number,
    Subject: String,
    Semester: String,
    Week: Number,
    Task: String,
    Day: Number
});

module.exports = mongoose.model("Activity", activitySchema)

非常欢迎您提供任何摆脱报价的帮助!

谢谢

1 个答案:

答案 0 :(得分:2)

问了已经有一段时间了,但是我会离开对我有用的东西。尝试在配置对象中使用它:

transformHeader:h => h.trim()