आप बहुत करीब थे। इसे काम करने के लिए मुझे बस कुछ बदलाव करने पड़े।
मुझे नहीं पता कि आपकी .csv फ़ाइल कैसी दिखती है, इसलिए मैंने ऐसी फ़ाइल बनाई:
A1, B1, C1, D1, E1, F1, G1, H1, I1
A2, B2, C2, D2, E2, F2, G2, H2, I2
आपका file.split ऑपरेशन लाइनों को विभाजित नहीं कर रहा था, लेकिन सब कुछ एक बड़ी लाइन पर रख रहा था। मैंने इसे इस तरह से किया और इसने काम किया:
var lines = file.split(/\r\n|\n/);
इसे सरणी के सदस्यों में विभाजित करने के लिए अलग-अलग लाइनें मिलीं। तब मैंने माना कि, चूंकि आप अपने इनपुट को एक सीएसवी कह रहे हैं, इसलिए आपके मान अल्पविराम से अलग होते हैं, पाइप नहीं। इसलिए मैंने आपकी लाइन को बदल दिया। इसे इसमें विभाजित करें
var line_parts = line.split(',');
हो सकता है कि मेरे द्वारा किए गए अन्य परिवर्तन आपके असफल होने का कारण नहीं बन रहे हों, लेकिन मुझे लगता है कि चीजें सामान्य रूप से इस तरह से की जाती हैं...
अपने संग्रह को इस तरह घोषित करने के बजाय
Meteor.orders = new Meteor.Collection('Orders');
मैंने इसे इस तरह किया
Orders = new Mongo.Collection("orders");
ध्यान दें कि यह सर्वर और क्लाइंट दोनों द्वारा चलाया जाता है।
सर्वर पर विधियों की घोषणा करने के आपके तरीके के बजाय, मैं इसे सर्वर कोड में डालता हूं (Meteor.start में नहीं):
Meteor.methods({
upload : function(fileContent) {
console.log("start insert");
import_file_orders(fileContent);
console.log("completed");
}
});
और, ज़ाहिर है, मैंने आपके 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));
प्रश्न में अद्यतन कोड के लिए संपादित करें:
import_file_orders फ़ंक्शन को क्लाइंट ब्लॉक से सर्वर ब्लॉक में ले जाएं।