Purpose: Demo how to load a CVS file into MongoDB.
$> meteor create load_csv
Then copy below 2 files into ./load_csv/
load_csv.html
<head>
<title>load_csv</title>
</head>
<body>
<h1>Welcome to CSV loader!</h1>
{{> read_file_orders}}
{{> order}}
</body>
<template name="read_file_orders">
<form class="well form-inline">
<input class="input-file" id="fileInput2" type="file" name="files[]">
<Button class="btn btn-primary" id="read_orders">Import</button>
<button>clear file name</button>
</form>
</template>
<template name="order">
<ul>
{{#each order}}
<li>{{id}}: {{value}}</li>
{{/each}}
</ul>
</template>
load_csv.js
Orders = new Mongo.Collection("orders");
if (Meteor.isClient) {
// counter starts at 0
Template.read_file_orders.events({
"click #read_orders" : function(e) {
var f = document.getElementById('fileInput2').files[0];
console.log("read file");
readFile(f, function(content) {
Meteor.call('upload',content);
});
}
});
Template.order.helpers({
'order': function(){
return Orders.find();
}
});
readFile = function(f,onLoadCallback) {
//When the file is loaded the callback is called with the contents as a string
var reader = new FileReader();
reader.onload = function (e){
var contents=e.target.result
onLoadCallback(contents);
}
reader.readAsText(f);
};
}
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
});
Meteor.methods({
upload : function(fileContent) {
console.log("start insert");
import_file_orders(fileContent);
console.log("completed");
}
});
import_file_orders = function(file) {
console.log("enter function import_file_orders")
var lines = file.split(/\r\n|\n/);
var l = lines.length;
for (var i=0; i < l; i++) {
var line = lines[i];
var line_parts = line.split(',');
var id = line_parts[0];
var value = line_parts[1];
var result = Orders.insert({id:id, value:value});
console.log(Orders.findOne(result));
}
};
}
No comments:
Post a Comment