MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Comment importer des données d'un fichier CSV dans la collection Meteor côté serveur

Tu étais très proche. J'ai juste dû apporter quelques modifications pour que cela fonctionne.

Je ne sais pas à quoi ressemble votre fichier .csv, j'en ai donc créé un qui ressemble à ceci :

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

Votre opération file.split ne divisait pas les lignes, mais mettait tout sur une grande ligne. Je l'ai fait de cette façon et cela a fonctionné :

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

Cela a permis de diviser les lignes individuelles en membres du tableau. Ensuite, j'ai supposé que, puisque vous appelez votre entrée un CSV, vos valeurs sont séparées par des virgules, pas par des tuyaux. J'ai donc changé votre line.split en ceci

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

Les autres changements que j'ai apportés ne sont peut-être pas la cause de l'échec du vôtre, mais je pense que c'est ainsi que les choses se passent normalement...

Au lieu de déclarer votre collection comme ça

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

J'ai fait comme ça

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

Notez que ceci est exécuté à la fois par le serveur et le client.

Au lieu de votre façon de déclarer des méthodes sur le serveur, j'ai juste mis ceci dans le code du serveur (pas dans Meteor.start):

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

Et, bien sûr, j'ai changé la ligne d'insertion en bas de votre fonction 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 pour le code mis à jour dans la question :

Déplacez la fonction import_file_orders du bloc client vers le bloc serveur.