2014-11-25 8 views
0

Я разрабатываю приложение с nodeJS, express и mongoDB, мне нужно взять данные пользователей из файла csv и загрузить его в мою базу данных, у этого db есть схема, разработанная с помощью мангуста.Как загрузить файл csv/xlsx в mongodb?

Но я не знаю, как это сделать. Каков наилучший подход к чтению файла csv/xlsx и проверка дубликатов против db, и если пользователь (один столбец в csv) не существует, вставьте его?

Есть ли какой-нибудь модуль для этого? или мне нужно построить его с нуля? Я довольно новичок в nodeJS, и мне нужен совет.

Это приложение имеет угловой интерфейс, поэтому пользователь может загрузить файл, возможно, мне стоит прочитать csv/xlsx в интерфейсе и преобразовать его в массив для узла, а затем вставить его?

ответ

1

Для файла csv вы можете использовать модуль узла 'csv-parse'.

  1. читать файл CSV с помощью модуля узла «FS»
  2. передать данные CSV парсер, и вы получите Arry массива, где внутренний массив представляет каждую строку.

Посмотрите на следующий код.

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

+0

@ishakya Я думаю, что вы можете преобразовать 'xlsx' в' csv', тогда вы можете использовать это и, пожалуйста, выполните поиск, чтобы найти лучшее решение. –

+0

спасибо ... я попробую и обновит – ishakya

Смежные вопросы