2014-11-25 142 views
0

我正在开发一个应用程序与nodeJS,express和mongoDB,我需要从csv文件中获取用户的数据并将其上传到我的数据库这个数据库有一个用猫鼬设计的模式。如何上传csv/xlsx文件到mongodb?

但我不知道该怎么做。读取csv/xlsx文件并检查数据库重复的最佳方法是什么?如果用户(csv中的一列)不在那里,请插入他?

有没有模块可以做到这一点?还是我需要从头开始构建它?我对nodeJS很新,我需要一些建议。

这个应用程序有一个角度前端,所以用户可以上传文件,也许我应该在前端读取csv/xlsx并将其转换为节点数组,然后插入它?

回答

1

对于csv文件,您可以使用节点模块'csv-parse'。

  1. 使用节点“FS”模块
  2. 将数据传递到CSV解析器和你将得到ARRY阵列,其中内数组代表每一行的读出的CSV文件。

看看下面的代码。

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文件分隔字段的字符(可以是',','。'等)。

然后你可以使用findOneAndUpdate查询mongodb。您也可以使用其他方法。

userModel 
     .findOneAndUpdate({ 
      user: userObject.user 
     }, { 
      $set: userObject 
     }, { 
      upsert: true, 
      multi: false 
     }) 
     .exec(function(err, user) { 
      console.log(err,user); 
     }); 
+0

感谢....但这些文件可以是CSV或XLSX那么,有没有办法使用类似的方式来存储类型的文件...... – ishakya 2014-11-26 04:26:59

+0

@ishakya我想你可以转换'xlsx'文件转换为'csv',那么你可以使用这个,请做一个搜索找到更好的解决方案。 – 2014-11-26 06:49:26

+0

谢谢...我会尝试并更新 – ishakya 2014-11-27 09:30:55