Byłeś bardzo blisko. Musiałem tylko wprowadzić kilka zmian, aby wszystko działało.
Nie wiem, jak wygląda twój plik .csv, więc stworzyłem taki:
A1, B1, C1, D1, E1, F1, G1, H1, I1
A2, B2, C2, D2, E2, F2, G2, H2, I2
Twoja operacja file.split nie dzieliła linii, ale umieszczała wszystko w jednej dużej linii. Zrobiłem to w ten sposób i zadziałało:
var lines = file.split(/\r\n|\n/);
To spowodowało, że poszczególne wiersze zostały podzielone na członków tablicy. Potem założyłem, że skoro nazywasz swoje dane wejściowe CSV, twoje wartości są oddzielone przecinkami, a nie potokami. Więc zmieniłem twój line.split na ten
var line_parts = line.split(',');
Inne wprowadzone przeze mnie zmiany mogą nie być tym, co spowodowało awarię, ale myślę, że tak się zwykle dzieje...
Zamiast deklarować swoją kolekcję w ten sposób
Meteor.orders = new Meteor.Collection('Orders');
Zrobiłem to w ten sposób
Orders = new Mongo.Collection("orders");
Zwróć uwagę, że jest to uruchamiane zarówno przez serwer, jak i klienta.
Zamiast twojego sposobu deklarowania metod na serwerze, po prostu umieściłem to w kodzie serwera (nie w Meteor.start):
Meteor.methods({
upload : function(fileContent) {
console.log("start insert");
import_file_orders(fileContent);
console.log("completed");
}
});
I oczywiście zmieniłem linię wstawiania na dole funkcji 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));
EDYTUJ dla zaktualizowanego kodu w pytaniu:
Przenieś funkcję import_file_orders z bloku klienta do bloku serwera.