我目前正在使用NodeJS,Express和Sequelize构建解决方案,其中CSV通过Sequelize将CSV移入MySQL DB的登台表中。这些文件已上传到本地文件夹并进行了解析,但是我现在需要创建一种机制,在该机制中检查表中的数据是否存在现有行,并更新或替换为新数据。希望通过解析来解决问题,并希望轻轻地将其放在肩膀上,以正确的方向引导我。
csv文件已加载到服务器,第二个POST操作将解析该文件并将其导入DB表。在新数据与表中的PK冲突之前,此方法非常有效。
router.post('/thirdparse', (req, res, next) => {
var thirdInput = fs.createReadStream('/Users/route/to/csvfile/3rdParty.csv');
var thirdParser = csv.parse({
delimiter: ',',
columns: true
})
const thirdTransform = csv.transform(function(row) {
let resultThird = {
thirdP_received_date: row['Received Date'],
thirdP_model: row['Model'],
thirdP_tracking_number: row['Tracking Number'],
thirdP_imei: row['IMEI'],
thirdP_serial_number: row['Serial Number'],
thirdP_new_serial: row['New IMEI'],
thirdP_new_imei: row['New Serial'],
thirdP_repair_outcome: row['Repair Outcome'],
thirdP_dispatch_date: row['Dispatch Date'],
thirdP_notes: row['Notes']
}
Third.create(resultThird)
.then(function() {
res.send('complete')
})
.catch(function(err) {
res.send('Error encountered: ' + err)
})
})
thirdInput.pipe(thirdParser).pipe(thirdTransform)
})
当前,如果IMEI已经存在,则解析将出错并返回验证错误。我正在寻找一种方法,如果可能的话,将数据从表中删除并替换为最新的csv文件中的数据,或者用新数据更新的行中的数据