0.2.1 • Published 5 years ago

mongoose-fixture-csv v0.2.1

Weekly downloads
1
License
MIT
Repository
-
Last release
5 years ago

mongoose-fixture-csv

Parse CSV file and it will make mongoose model to save on Mongodb.

npm install mongoose-fixture-csv

Using

You fixture file

const fixtureCSV = require("mongoose-fixture-csv");
const mongoose = require("mongoose");

// Models
const Usuarios = require("./models/usuario");

const csvModel = [{ csv: "usuarios.csv", model: Usuarios }];

mongoose.connect(
  "mongodb://localhost/fixture-test",
  { useCreateIndex: true, useNewUrlParser: true },
  err => {
    if (err) { return console.error(err); }
    else {
      Usuarios.deleteMany({}).then(() =>
        fixtureCSV(csvModel, { basePath: __dirname + "/csv/", delimiter: ";" })
          .catch(err => {
            console.error(err.message);
          })
          .then(objectIDs => {
            console.log(objectIDs);
          })
          .finally(() => {
            mongoose.disconnect();
          });
        )
    }
  }
);

Mongoose Model

const schema = new Schema({
  name:  String,
  mail: String,
  password: String
});

schema.pre("save", function(next) {
  if (this.isModified("password")) {
    this.password = crypto
      .createHash("sha256")
      .update(this.password)
      .digest("hex");
  }
  next();
});

module.exports = mongoose.model("Usuarios", schema);

CSV File

namemailpassword
Matiasadmin@gmail.com123456
Ezequielusuario@mail.com123456

Fixture Options

options = {
  showSave: false,
  delimiter: ";",
  basePath: undefined,
  skipUndefined: true
}

Sub object

Mongoose Models

const mongoose = require("mongoose");
const schema = mongoose.Schema({
  name: String,
  pets: [
    {
      name: String,
      age: Number
    }
  ]
});
module.exports = mongoose.model("Person", schema);

CSV File

For pets

idnameageperson_id
1pet_id_1_p0100
2pet_id_2_p1201
3pet_id_3_p1301
4pet_id_4_p0400

For person

nameid
persona_id_00
persona_id_11
persona_id_22

You fixture file

const fixtureCSV = require("./../index");
const mongoose = require("mongoose");

// Models
const csvModel = [
  {
    csv: "person.csv",
    model: require("./models/person"),
    csvFieldId: "id", // default index
    pets: {
      csv: "pets.csv",
      csvFieldId: "id",
      ref: "person_id"
    }
  }
];

mongoose.connect(
  "mongodb://localhost/fixture-test",
  { useCreateIndex: true, useNewUrlParser: true },
  err => {
    if (err) { return console.error(err); }
    else {
      fixtureCSV(csvModel, { basePath: __dirname + "/csv/" })
        .catch(err => { console.error(err.message); return; })
        .finally(() => { mongoose.disconnect();});
    }
  }
);

With sub models

const fixtureCSV = require("mongoose-fixture-csv");
const Group = require("./../../../models/grupo_componente");

fixtureCSV([{ csv, model: require("./../../../models/componente") }], {
  basePath: __dirname + "/"
}).then(objectIDs => {
  new Group({ nombre: "Grupos", componentes: objectIDs.componentes }).save((err, general) => {
  if(err) { console.error(err) }
  else { console.log(general) }
  });
});
0.2.1

5 years ago

0.2.0

5 years ago

0.1.0

5 years ago

0.0.3

5 years ago

0.0.2

5 years ago

0.0.1

5 years ago