Je was heel dichtbij. Ik moest alleen een paar wijzigingen aanbrengen om het werkend te krijgen.
Ik weet niet hoe je .csv-bestand eruitziet, dus ik heb er een gemaakt die er zo uitziet:
A1, B1, C1, D1, E1, F1, G1, H1, I1
A2, B2, C2, D2, E2, F2, G2, H2, I2
Je file.split-operatie splitste de regels niet, maar zette alles op één grote regel. Ik deed het op deze manier en het werkte:
var lines = file.split(/\r\n|\n/);
Dat zorgde ervoor dat individuele regels werden opgesplitst in leden van de array. Toen nam ik aan dat, aangezien je je invoer een CSV noemt, je waarden worden gescheiden door komma's, niet door pijpen. Dus ik heb je line.split in dit veranderd
var line_parts = line.split(',');
Andere wijzigingen die ik heb aangebracht, zijn misschien niet de oorzaak van het falen van de jouwe, maar dit is hoe ik denk dat de dingen normaal gesproken worden gedaan...
In plaats van je verzameling op deze manier te declareren
Meteor.orders = new Meteor.Collection('Orders');
Ik heb het zo gedaan
Orders = new Mongo.Collection("orders");
Merk op dat dit wordt uitgevoerd door zowel de server als de client.
In plaats van jouw manier om methoden op de server te declareren, heb ik dit gewoon in servercode gezet (niet in Meteor.start):
Meteor.methods({
upload : function(fileContent) {
console.log("start insert");
import_file_orders(fileContent);
console.log("completed");
}
});
En natuurlijk heb ik de invoegregel onderaan je import_file_orders-functie gewijzigd
var result = Orders.insert({Patient:pat_id, Exam_code:ex_key, Exam_name:ex_name, Clinical_info:clin_info, Order_info:order_info, Clinician_first:clinician_first_name, Clinician_last:clinician_last_name, Clinician_c_code:clinician_code, Clinician_riziv:clinician_riziv, Planned:null});
console.log(Orders.findOne(result));
BEWERKEN voor bijgewerkte code in de vraag:
Verplaats de functie import_file_orders van het clientblok naar het serverblok.