0.2.1 • Published 5 years ago
mongoose-fixture-csv v0.2.1
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
name | password | |
---|---|---|
Matias | admin@gmail.com | 123456 |
Ezequiel | usuario@mail.com | 123456 |
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
id | name | age | person_id |
---|---|---|---|
1 | pet_id_1_p0 | 10 | 0 |
2 | pet_id_2_p1 | 20 | 1 |
3 | pet_id_3_p1 | 30 | 1 |
4 | pet_id_4_p0 | 40 | 0 |
For person
name | id |
---|---|
persona_id_0 | 0 |
persona_id_1 | 1 |
persona_id_2 | 2 |
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) }
});
});