sql >> Base de Datos >  >> NoSQL >> MongoDB

Cómo importar datos de un archivo CSV a la colección Meteor en el lado del servidor

Estabas muy cerca. Solo tuve que hacer algunos cambios para que funcionara.

No sé cómo se ve tu archivo .csv, así que hice uno así:

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

Su operación file.split no estaba dividiendo las líneas, sino poniendo todo en una línea grande. Lo hice de esta manera y funcionó:

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

Eso hizo que las líneas individuales se dividieran en miembros de la matriz. Entonces asumí que, dado que está llamando a su entrada un CSV, sus valores están separados por comas, no por conductos. Así que cambié tu line.split a esto

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

Otros cambios que hice pueden no ser los que causaron que el tuyo fallara, pero así es como creo que normalmente se hacen las cosas...

En lugar de declarar tu colección así

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

Lo hice así

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

Tenga en cuenta que esto lo ejecutan tanto el servidor como el cliente.

En lugar de su forma de declarar métodos en el servidor, simplemente puse esto en el código del servidor (no en Meteor.start):

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

Y, por supuesto, cambié la línea de inserción en la parte inferior de su función 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));

EDIT para código actualizado en la pregunta:

Mueva la función import_file_orders del bloque del cliente al bloque del servidor.