npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

db-seeder-mongo-db

v0.1.3

Published

Seed a mongo database with data

Readme

DB Seeder Mongo Db

Creates a server that can seed a mongo db with data. This is developed with e2e-tests in mind, and allows each test to set the database in a desired state.

Setup with docker

The easiest way to use this service is most likely to use it with docker compose.

Start by creating a .env file with the following content:

MONGO_INITDB_ROOT_USERNAME=root
MONGO_INITDB_ROOT_PASSWORD=root
MONGO_INITDB_DATABASE=myDb

And then create a docker-compose.yml file with the following content:

services:
  mongo:
    restart: always
    image: mongo:8
    env_file:
      - .env
    ports:
      - 27017:27017
    environment:
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
      - MONGO_INITDB_DATABASE=${MONGO_INITDB_DATABASE}
    healthcheck:
      test: ["CMD-SHELL", "mongod --version"]
      interval: 5s
      timeout: 5s
      retries: 5

  db-seeder-mongo-db:
   restart: always
   image: hammerpath/db-seeder-mongo-db:0.1
   ports:
      - "3000:3000"
   env_file:
      - .env
   environment:
      - MONGO_HOST=mongo
      - MONGO_INITDB_ROOT_USERNAME=${MONGO_INITDB_ROOT_USERNAME}
      - MONGO_INITDB_ROOT_PASSWORD=${MONGO_INITDB_ROOT_PASSWORD}
      - MONGO_INITDB_DATABASE=${MONGO_INITDB_DATABASE}
   depends_on:
      mongo:
        condition: service_healthy  

The database needs to be initialized with collections before using this service. If it's empty, this can be done by creating a init_mongo_collections.js file in the root of your project with the following content:

db.createCollection("users");

And add it to the docker-compose.yml file:

services:
  mongo:
    # --- Other properties here ---
    volumes:
      - ./init_mongo_collections.js:/docker-entrypoint-initdb.d/init_mongo_collections.js:ro

And then run docker compose up.

Now you can call the auto generated endpoints for each collection.

Setup with npm

npm i db-seeder-mongo-db

In package.json add the following script:

{
  "scripts": {
    "db-seeder": "db-seeder-mongo-db run"
  }
}

And run the server with:

npm run db-seeder

Usage

The server will create endpoints for each collection in the database. The endpoints are named after the collections.

Populate the values

Send a POST request to http://localhost:3000/seed/{collectionName} with the data you want to seed. An example would look like this:

const users = [
    {
        id: 1,
        name: "John Doe"
    },
    {
        id: 2,
        name: "Jane Doe"
    }
];
// Cypress
cy.request("POST", "http://localhost:3000/seed/users", users);

// Playwright
await request.post("http://localhost:3000/seed/users", {
    data: users
});

Remove the values from the collection

Send a POST request to http://localhost:3000/truncate/{collectionName} to remove the value(s) from the collection.

// Cypress
cy.request("POST", "http://localhost:3000/truncate/users");

// Playwright
await request.post("http://localhost:3000/truncate/users");

Remove all values from the database

Send a POST request to http://localhost:3000/truncate to remove all values from the database.

// Cypress
cy.request("POST", "http://localhost:3000/truncate");

// Playwright
await request.post("http://localhost:3000/truncate");