Eri molto vicino. Ho dovuto solo apportare alcune modifiche per farlo funzionare.
Non so che aspetto abbia il tuo file .csv, quindi ne ho creato uno così:
A1, B1, C1, D1, E1, F1, G1, H1, I1
A2, B2, C2, D2, E2, F2, G2, H2, I2
La tua operazione file.split non stava dividendo le righe, ma stava mettendo tutto su una grande riga. L'ho fatto in questo modo e ha funzionato:
var lines = file.split(/\r\n|\n/);
Ciò ha fatto dividere le singole righe in membri dell'array. Quindi ho pensato che, dal momento che stai chiamando il tuo input un CSV, i tuoi valori sono separati da virgole, non da pipe. Quindi ho cambiato il tuo line.split in questo
var line_parts = line.split(',');
Altre modifiche che ho apportato potrebbero non essere ciò che ha causato il fallimento del tuo, ma è così che penso che le cose vengano normalmente fatte...
Invece di dichiarare la tua collezione in questo modo
Meteor.orders = new Meteor.Collection('Orders');
L'ho fatto così
Orders = new Mongo.Collection("orders");
Nota che questo è eseguito sia dal server che dal client.
Invece del tuo modo di dichiarare i metodi sul server, l'ho semplicemente inserito nel codice del server (non in Meteor.start):
Meteor.methods({
upload : function(fileContent) {
console.log("start insert");
import_file_orders(fileContent);
console.log("completed");
}
});
E, naturalmente, ho cambiato la riga di inserimento nella parte inferiore della tua funzione import_file_orders
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));
MODIFICA per il codice aggiornato nella domanda:
Sposta la funzione import_file_orders dal blocco client al blocco server.