从Sequelize和Node.js中的CSV中删除重复值
我试图在csv文件中读取并在创建时删除重复的值。我尝试使用Async来做,但没有运气。我已经恢复了更简单的方式,并没有删除重复项。下面的代码读取并创建对象,但不删除重复项。我使用了fast-csv库来读取csv。
const router = require('express').Router();
const Staff = require('../models/Staff');
const fs = require('fs');
const csv = require('fast-csv');
module.exports = router;
router.get('/add_csv', function (req, res) {
var stream = fs.createReadStream("./public/assets/csv/data_extract.csv");
csv
.fromStream(stream, {headers : true})
.on("data", function(data){
console.log(data);
const userName = data.name;
const firstName = data.forename;
const lastName = data.surname;
const email = data.college_email;
Staff.findOrCreate({
where : {
userName : userName,
firstName : firstName,
lastName : lastName,
email : email
}
});
})
.on("end", function(){
console.log("done");
res.send("done");
});
});
回答如下:
您是否尝试过.spread子句进行调试?
如果你添加.spread子句,它将告诉你它在做什么记录。
更改
Staff.findOrCreate({
where : {
userName : userName,
firstName : firstName,
lastName : lastName,
email : email
}
});
至
Staff.findOrCreate({
where : {
userName : userName,
firstName : firstName,
lastName : lastName,
email : email
}
})
.spread((staff, created) => {
console.log(staff.get({
plain: true
}))
console.log(created);
这将打印出记录,如果创建了新记录或其他错误,则显示为true。希望我的语法正确..
在这里看到代码:http://docs.sequelizejs/manual/tutorial/models-usage.html