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.
- 🚀 Easy integration with Mongoose models
- 📝 Customizable faker mapping for each field
- 🔄 Bulk insert support
- 🎯 Type-safe document generation
- 🛠 Simple API with minimal configuration
npm install mongofaker
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!");
Generates fake documents for a given Mongoose model.
-
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
)
-
fakerMap (
- If
insert: true
: Returns the result ofModel.insertMany()
- If
insert: false
: Returns an array of generated documents
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
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,
});
Create a .env
file in your project root:
MONGO_URI=mongodb://127.0.0.1:27017/your-database-name
- @faker-js/faker - Generate fake data
- mongoose - MongoDB object modeling
- dotenv - Environment variable loader
Clone the repository and install dependencies:
git clone <repository-url>
cd mongofaker
npm install
Run the example:
node example/test.js
MIT
Sarvesh
- mongo
- faker
- seed
- database
- generate
- mongodb
- mongoose
- fake data
- testing
- development
Contributions are welcome! Please feel free to submit a Pull Request.