我在使用快速cv时遇到了一个小问题。问题在于,当我将标头设置为true时,会得到“未定义”数据(只有空数据会被推送到数据库)。
const db = require("../models");
const fs = require("fs");
const csv = require("fast-csv");
const csvfile = "./public/csv/vendor_example.csv";
const stream = fs.createReadStream(csvfile);
router.get("/import_data", (req, res, next) => {
// csv.fromStream(stream, { headers: true });
var csvStream = csv(stream, { headers: true })
.on("data", function(data) {
// products.push(data);
var imported_data = new db.Products({
// date: new Date(),
column1: data[0]
});
imported_data.save(error => {
console.log(skus_data);
if (error) {
throw error;
}
});
})
.on("end", function() {
console.log("ended");
});
stream.pipe(csvStream);
// res.json({ success: "Data Imported", status: 200 });
res.json({
success: "Data imported with no errors",
status: 200
});
});
但是,当我删除“ stream,{headers:true}”时,它确实起作用,但是标题被推送到数据库中。
有什么办法解决此问题吗?
谢谢!
答案 0 :(得分:0)
想通了。
var imported_data = new db.Products({
// date: new Date(),
column1: data[0]
});
我需要指定标题的名称而不是data [0],例如:
第1列:data.names