Seed mongodb with data using mongoose models
npm install --save mongoose-data-seed
md-seed init
md-seed init
will ask you to choose a folder for your seeders.
md-seed init
will create the seeders
folder, generate md-seed-config.js
and update your package.json
.
Generate seeder file
md-seed g users
Run all seeders
md-seed run
Or run specific seeders
md-seed run users posts comments
Drop the database before seeding
md-seed run --dropdb
import { Seeder } from 'mongoose-data-seed';
import { User } from '../server/models';
const data = [
{
email: 'user1@gmail.com',
password: '123123',
passwordConfirmation: '123123',
isAdmin: true
},
{
email: 'user2@gmail.com',
password: '123123',
passwordConfirmation: '123123',
isAdmin: false
}
];
class UsersSeeder extends Seeder {
async shouldRun() {
return User.countDocuments()
.exec()
.then(count => count === 0);
}
async run() {
return User.create(data);
}
}
export default UsersSeeder;
md-seed
expecting to get 3 values from md-seed-config.js
seedersList
- A key/value list of all your seeders,md-seed
will run your seeders as they ordered in the list.connect
- Connect to mongodb implementation (should return promise).dropdb
- Drop/Clear the database implementation (should return promise).
import mongoose from 'mongoose';
import Users from './seeders/users.seeder';
import Posts from './seeders/posts.seeder';
import Comments from './seeders/comments.seeder';
const mongoURL = process.env.MONGO_URL || 'mongodb://localhost:27017/dbname';
/**
* Seeders List
* order is important
* @type {Object}
*/
export const seedersList = {
Users,
Posts,
Comments,
};
/**
* Connect to mongodb implementation
* @return {Promise}
*/
export const connect = async () => await mongoose.connect(mongoURL, { useNewUrlParser: true });
/**
* Drop/Clear the database implementation
* @return {Promise}
*/
export const dropdb = async () => mongoose.connection.db.dropDatabase();
mongoose-data-seed
configurations will get loaded from the mdSeed
field in your package.json
file.
Field | Default Value | Description |
---|---|---|
seedersFolder |
'./seeders' |
Path for your seeders-folder, seeders will be generated into this folder. |
customSeederTemplate |
undefined |
Path to a custom template file to generate your seeders from. |
MIT