我正在开发一个带有nodeJS,express和mongoDB的应用程序,我需要带用户'来自csv文件的数据并将其上传到我的数据库,这个数据库有一个用mongoose设计的模式。
但我不知道该怎么做。读取csv / xlsx文件并检查数据库的重复项的最佳方法是什么?如果用户(csv中的一列)不存在,请插入?
有没有任何模块可以做到这一点?还是我需要从头开始构建它?我对nodeJS很陌生,我需要一些建议。
这个应用程序有一个角度前端,所以用户可以上传文件,也许我应该读取前端的csv / xlsx并将其转换为节点的数组,然后插入它?
答案 0 :(得分:1)
对于csv
文件,您可以使用节点模块'csv-parse'。
请查看以下代码。
var csvParser = require('csv-parse');
fs.readFile(filePath, {
encoding: 'utf-8'
}, function(err, csvData) {
if (err) {
console.log(err);
}
csvParser(csvData, {
delimiter: ','
}, function(err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
});
此处filePath是csv文件的路径,分隔符将根据您的文件而定。它是分隔csv文件中字段的字符(可以是',','。'等)。
然后您可以对mongodb使用findOneAndUpdate
查询。您也可以使用其他方法。
userModel
.findOneAndUpdate({
user: userObject.user
}, {
$set: userObject
}, {
upsert: true,
multi: false
})
.exec(function(err, user) {
console.log(err,user);
});