Bạn đã rất gần. Tôi chỉ phải thực hiện một vài thay đổi để nó hoạt động.
Tôi không biết tệp .csv của bạn trông như thế nào, vì vậy tôi đã tạo một tệp như thế này:
A1, B1, C1, D1, E1, F1, G1, H1, I1
A2, B2, C2, D2, E2, F2, G2, H2, I2
Thao tác file.split của bạn không phải là chia nhỏ các dòng mà đang đặt mọi thứ trên một dòng lớn. Tôi đã làm theo cách này và nó đã hoạt động:
var lines = file.split(/\r\n|\n/);
Điều đó có các dòng riêng lẻ để chia thành các thành viên của mảng. Sau đó, tôi giả định rằng, vì bạn đang gọi đầu vào của mình là CSV, nên các giá trị của bạn được phân tách bằng dấu phẩy, không phải dấu ống dẫn. Vì vậy, tôi đã thay đổi line.split của bạn thành this
var line_parts = line.split(',');
Những thay đổi khác mà tôi đã thực hiện có thể không phải là nguyên nhân khiến bạn thất bại, nhưng đây là cách tôi nghĩ rằng mọi thứ vẫn diễn ra bình thường ...
Thay vì khai báo bộ sưu tập của bạn như thế này
Meteor.orders = new Meteor.Collection('Orders');
Tôi đã làm nó như thế này
Orders = new Mongo.Collection("orders");
Lưu ý rằng điều này được chạy bởi cả máy chủ và máy khách.
Thay vì cách bạn khai báo các phương thức trên máy chủ, tôi chỉ đặt điều này vào mã máy chủ (không phải trong Meteor.start):
Meteor.methods({
upload : function(fileContent) {
console.log("start insert");
import_file_orders(fileContent);
console.log("completed");
}
});
Và, tất nhiên, tôi đã thay đổi dòng chèn ở cuối hàm import_file_orders của bạn
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));
CHỈNH SỬA cho mã được cập nhật trong câu hỏi:
Di chuyển hàm import_file_orders từ khối máy khách sang khối máy chủ.