MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

So importieren Sie Daten aus einer CSV-Datei in die Meteor-Sammlung auf der Serverseite

Du warst ganz in der Nähe. Ich musste nur ein paar Änderungen vornehmen, damit es funktioniert.

Ich weiß nicht, wie Ihre .csv-Datei aussieht, also habe ich eine erstellt, die so aussieht:

A1, B1, C1, D1, E1, F1, G1, H1, I1
A2, B2, C2, D2, E2, F2, G2, H2, I2

Ihre file.split-Operation hat die Zeilen nicht geteilt, sondern alles auf eine große Zeile gesetzt. Ich habe es so gemacht und es hat funktioniert:

var lines = file.split(/\r\n|\n/);

Dadurch wurden einzelne Zeilen in Mitglieder des Arrays aufgeteilt. Dann bin ich davon ausgegangen, dass Ihre Werte durch Kommas und nicht durch Pipes getrennt sind, da Sie Ihre Eingabe als CSV bezeichnen. Also habe ich Ihre line.split in diese geändert

var line_parts = line.split(',');

Andere Änderungen, die ich vorgenommen habe, haben möglicherweise nicht dazu geführt, dass Ihre fehlgeschlagen sind, aber ich denke, dass die Dinge normalerweise so gemacht werden ...

Anstatt deine Sammlung so zu deklarieren

Meteor.orders = new Meteor.Collection('Orders');

Ich habe es so gemacht

Orders = new Mongo.Collection("orders");

Beachten Sie, dass dies sowohl vom Server als auch vom Client ausgeführt wird.

Anstelle Ihrer Methode, Methoden auf dem Server zu deklarieren, habe ich dies einfach in den Servercode eingefügt (nicht in Meteor.start):

Meteor.methods({
    upload : function(fileContent) {
        console.log("start insert");
        import_file_orders(fileContent);
        console.log("completed");
    }
});

Und natürlich habe ich die Einfügezeile am Ende Ihrer import_file_orders-Funktion geändert

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));

EDIT für aktualisierten Code in der Frage:

Verschieben Sie die Funktion import_file_orders aus dem Client-Block in den Server-Block.