如何将csv / xlsx文件上传到mongodb?

时间:2014-11-25 04:34:33

标签: node.js mongodb csv mongoose xlsx

我正在开发一个带有nodeJS,express和mongoDB的应用程序,我需要带用户'来自csv文件的数据并将其上传到我的数据库,这个数据库有一个用mongoose设计的模式。

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

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 使用节点'fs'模块
  2. 读取csv文件
  3. 将数据传递给csv解析器,你将获得数组的arry,其中内部数组代表每一行。
  4. 请查看以下代码。

    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);
            });