• Stars
    star
    110
  • Rank 316,770 (Top 7 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 7 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Seed mongodb with data using mongoose models

Package Version semantic-release Downloads Status Build Status: Linux Coverage Status PRs Welcome dependencies Status devDependencies Status Greenkeeper badge code style: prettier FOSSA Status MIT License

mongoose-data-seed

Seed mongodb with data using mongoose models

cli example using md-seed run

Install

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.

Use

Generate seeder file

md-seed g users

Run all seeders

md-seed run

Or run specific seeders

md-seed run users posts comments

Options

Drop the database before seeding

md-seed run --dropdb

Seeder Example

import { Seeder } from 'mongoose-data-seed';
import { User } from '../server/models';

const data = [
  {
    email: '[email protected]',
    password: '123123',
    passwordConfirmation: '123123',
    isAdmin: true
  },
  {
    email: '[email protected]',
    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-config.js

md-seed expecting to get 3 values from md-seed-config.js

  1. seedersList - A key/value list of all your seeders, md-seed will run your seeders as they ordered in the list.
  2. connect - Connect to mongodb implementation (should return promise).
  3. dropdb - Drop/Clear the database implementation (should return promise).

Example

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();

Configurations

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.

Examples

  1. md-seed-example

License

MIT

FOSSA Status MIT License