我正在服务器上运行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)
非常欢迎您提供任何摆脱报价的帮助!
谢谢
答案 0 :(得分:2)
问了已经有一段时间了,但是我会离开对我有用的东西。尝试在配置对象中使用它:
transformHeader:h => h.trim()