2015-05-20 62 views
0

Node開始。 放在一起的自定義模塊,它解析一個Excel文件到MongoDB的:如何正確執行自定義節點模塊作爲函數

exports.excelFileParser = function(fileName){ 
    if(typeof require !== 'undefined') XLSX = require('xlsx'); 


    var mongodb = require('mongodb'); 

    var MongoClient = mongodb.MongoClient; 

    var url = 'mongodb://127.0.0.1:27017/my_database'; 

     var workbook = XLSX.readFile('./uploads/' + fileName); 

     var worksheet = workbook.Sheets[workbook.SheetNames[0]]; 

     var json_conversion = XLSX.utils.sheet_to_json(worksheet); 

     MongoClient.connect(url, function (err, db) { 
      if (err) { 
       console.log('Unable to connect to the mongoDB server. Error:', err); 
      } else { 
       console.log('Connection established to', url); 

       db.open(function(err, client){ 
        client.createCollection("test_collection", function(err, col) { 
         client.collection("test_collection", function(err, col) { 
          { 
           json_conversion.forEach(function(record) { 
            col.insert(record, function(err, result) { 
             if(err) { 
              console.log(err); 
             } 
             else { 

             } 
            }); 
           }) 
          } 
         }); 
        }); 
       }); 
       console.log("finished"); 
       db.close(); 
      } 
     }); 

}; 

在我server.js我需要這個模塊如下:

var excelFileParser = require("excel-file-parser"); 

在我節點應用程序的某個點,我需要執行這個模塊的功能,並傳遞一個文件名來解析。 當我嘗試這樣說:

excelFileParser(file.fieldname); 

我得到

TypeError: object is not a function 

例外。

從server.js中運行我的模塊的正確方法是什麼?

回答

1

讓我們看一下你的模塊:

exports.excelFileParser = function(fileName) { 
    ... 
} 

當你調用require('excel-file-parser')你基本上得到了exports對象。

所以調用您已經創建你需要調用該函數的功能:

var myParser = require("excel-file-parser"); 
myParser.excelFileParser('filename');