This package provides a set of methods to generate realistic, randomized data for your database seeding needs. Whether you need user details, location information, or internet-related data, @megaorm/faker has you covered.
To install this package, run the following command:
npm install @megaorm/faker
Import MegaFaker
from @megaorm/faker
:
const { MegaFaker } = require('@megaorm/faker');
Create an Instance:
const faker = new MegaFaker();
Now you are ready to generate some fake data!
Generate realistic user details:
console.log(faker.firstName()); // e.g., "john"
console.log(faker.lastName()); // e.g., "Doe"
console.log(faker.name()); // e.g., "john Doe"
console.log(faker.email()); // e.g., "johndoe123@example.com"
console.log(faker.gmail()); // e.g., "johndoe123@gmail.com"
console.log(faker.password()); // e.g., "p@ssw0rd123"
console.log(faker.username()); // e.g., "johndoe92"
Generate data for geographic and address fields:
console.log(faker.continent()); // e.g., "Asia"
console.log(faker.country()); // e.g., "Canada"
console.log(faker.city()); // e.g., "San Francisco"
console.log(faker.street()); // e.g., "River Street"
console.log(faker.address()); // e.g., "1234 Maple St, Toronto, Canada"
Generate filler text for your database:
console.log(faker.sentence()); // e.g., "Random sentence."
console.log(faker.paragraph()); // e.g., "Random paragraph."
console.log(faker.text()); // e.g., "Random text."
console.log(faker.lorem()); // e.g., "Random lorem."
Generate data for job-related fields:
console.log(faker.job()); // e.g., "Software Engineer"
console.log(faker.company()); // e.g., "Global Solutions"
Simulate realistic product data:
console.log(faker.product()); // e.g., "Pro Laptop"
console.log(faker.sku()); // e.g., "123-456-789"
console.log(faker.price()); // e.g., 45.67
console.log(faker.category()); // e.g., "Sport" (45 unique categories)
console.log(faker.card('#### #### #### ###')); // e.g., "1234 5678 9012 345"
Generate realistic web-related details:
console.log(faker.path()); // e.g., "blog/introduction"
console.log(faker.domain()); // e.g., "example.com"
console.log(faker.url()); // e.g., "https://shop.net/products/pricing"
console.log(faker.ipv4()); // e.g., "192.168.1.1"
console.log(faker.ipv6()); // e.g., "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
Generate a variety of additional data types:
console.log(faker.boolean()); // e.g., 1 | 0
console.log(faker.date()); // e.g., "2024-11-01"
console.log(faker.time()); // e.g., "14:30:00"
console.log(faker.datetime()); // e.g., "2024-11-01 14:30:00"
console.log(faker.zip()); // e.g., "90210"
console.log(faker.phone('+1 (###) ###-####')); // e.g., "+1 (123) 612-3456"
console.log(faker.id(100)); // e.g., 13 (number between 0 and 100)
The MegaFaker
library includes helper functions for custom randomization:
const {
randomBetween, // Generate a random number in a range
randomIndex, // Get a random index from an array
randomSelect, // Select a random item from an array
randomChar, // Generate a random character
} = require('@megaorm/faker');
console.log(randomBetween(0, 10)); // e.g., 3
console.log(randomIndex(['john', 'Doe'])); // e.g., 0
console.log(randomSelect(['john', 'Doe'])); // e.g., 'john'
console.log(randomChar()); // e.g., 'A'
You can create custom faker methods and extend the functionality of MegaFaker
. Here’s how you can do it:
Leverage the provided random functions to define your own data generators. For example, create a function to generate random TV shows:
export function tvShow() {
return randomSelect([
'Breaking Bad',
'Friends',
'Game of Thrones',
'Stranger Things',
]);
}
console.log('TV Show:', tvShow()); // e.g., "Friends"
For more advanced use cases, extend the MegaFaker
class to incorporate additional functionality directly into the faker instance.
const { MegaFaker } = require('@megaorm/faker');
class BetaFaker extends MegaFaker {
// Generate a random tv show
tvShow() {
return this.random.select([
'The Office',
'Parks and Recreation',
'The Crown',
'Black Mirror',
]);
}
// Generate a random 5 stars rating
rating() {
const left = this.random.between(1, 4); // 4
const right = this.random.between(0, 9); // 5
return Number(`${left}.${right}`); // 4.5
}
}
module.exports = { BetaFaker };
Once extended, you can import your custom faker class, create an instance, and use the enhanced methods in your seeder files:
// Import `BetaFaker`
const { BetaFaker } = require('./BetaFaker');
// Create instance
const faker = new BetaFaker();
console.log(faker.tvShow()); // e.g., "The Crown"
console.log(faker.rating()); // e.g., 4.9
- Add domain-specific faker methods.
- Maintain reusability by centralizing custom randomization logic.
- Enhance the default API for niche use cases, improving productivity.
The MegaFaker API is your ultimate tool for generating realistic and diverse mock data. Let your creativity flow and streamline your database seeding!