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中运行我的模块的正确方法是什么?
答案 0 :(得分:1)
让我们看看你的模块:
exports.excelFileParser = function(fileName) {
...
}
当您致电require('excel-file-parser')
时,您基本上会获得exports
个对象。
因此,要调用您创建的函数,您需要调用函数:
var myParser = require("excel-file-parser");
myParser.excelFileParser('filename');