mongofaker

1.0.0 • Public • Published

MongoFaker

Generate fake documents into MongoDB using your own schema with ease! MongoFaker is a lightweight Node.js library that helps you populate your MongoDB collections with realistic fake data for testing and development purposes.

Features

  • 🚀 Easy integration with Mongoose models
  • 📝 Customizable faker mapping for each field
  • 🔄 Bulk insert support
  • 🎯 Type-safe document generation
  • 🛠 Simple API with minimal configuration

Installation

npm install mongofaker

Quick Start

import mongoose from "mongoose";
import { generateFakeDocument } from "mongofaker";

// Define your Mongoose model
const userSchema = new mongoose.Schema({
  name: { type: String, required: true },
  email: { type: String, required: true, unique: true },
  age: { type: Number, min: 0 },
});

const User = mongoose.model("User", userSchema);

// Connect to MongoDB
await mongoose.connect("mongodb://localhost:27017/your-database");

// Generate and insert fake documents
await generateFakeDocument(User, 50, {
  fakerMap: {
    name: (faker) => faker.person.fullName(),
    email: (faker) => faker.internet.email(),
    age: (faker) => faker.number.int({ min: 18, max: 50 }),
  },
  insert: true,
});

console.log("50 fake users generated successfully!");

API Reference

generateFakeDocument(Model, count, options)

Generates fake documents for a given Mongoose model.

Parameters

  • Model (mongoose.Model): The Mongoose model to generate documents for
  • count (number): Number of documents to generate
  • options (object): Configuration options
    • fakerMap (object): Mapping of field names to faker functions
    • insert (boolean): Whether to insert documents into the database (default: false)

Returns

  • If insert: true: Returns the result of Model.insertMany()
  • If insert: false: Returns an array of generated documents

Examples

Generate Without Inserting

import { generateFakeDocument } from "mongofaker";

const fakeUsers = await generateFakeDocument(User, 10, {
  fakerMap: {
    name: (faker) => faker.person.fullName(),
    email: (faker) => faker.internet.email(),
    age: (faker) => faker.number.int({ min: 18, max: 65 }),
  },
  insert: false, // Just generate, don't insert
});

console.log(fakeUsers); // Array of 10 fake user objects

Complex Schema Example

const productSchema = new mongoose.Schema({
  name: String,
  price: Number,
  category: String,
  inStock: Boolean,
  description: String,
  createdAt: Date,
});

const Product = mongoose.model("Product", productSchema);

await generateFakeDocument(Product, 100, {
  fakerMap: {
    name: (faker) => faker.commerce.productName(),
    price: (faker) => faker.commerce.price({ min: 10, max: 1000 }),
    category: (faker) => faker.commerce.department(),
    inStock: (faker) => faker.datatype.boolean(),
    description: (faker) => faker.commerce.productDescription(),
    createdAt: (faker) => faker.date.past(),
  },
  insert: true,
});

Environment Setup

Create a .env file in your project root:

MONGO_URI=mongodb://127.0.0.1:27017/your-database-name

Dependencies

Development

Clone the repository and install dependencies:

git clone <repository-url>
cd mongofaker
npm install

Run the example:

node example/test.js

License

MIT

Author

Sarvesh

Keywords

  • mongo
  • faker
  • seed
  • database
  • generate
  • mongodb
  • mongoose
  • fake data
  • testing
  • development

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Package Sidebar

Install

npm i mongofaker

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

5.02 kB

Total Files

4

Last publish

Collaborators

  • sarvesh.dev