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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@videsk/mongoose-dummy

v1.4.3

Published

Random data generator based on mongoose schema, with very flexible options, populate feature and easily integrable with random data generators libraries.

Downloads

30

Readme

Mongoose Dummy

Mongoose Dummy is an advanced random data generator library tailored for Mongoose schemas. It enables flexible and direct implementation on your Mongoose models, supporting features like populate, enum random selection, and custom field filters. Now fully compatible with all major random/fake data generator libraries, it’s ideal for creating realistic testing and development environments.

Features

  • Direct integration with Mongoose models.
  • Support for the populate feature to mimic database references.
  • Enum random selection for fields defined with specific sets of values.
  • Custom field filters to fine-tune generated data.
  • Compatibility with third-party data generation libraries for extended customizability.
  • Customizable array lengths for generating lists of related documents.

Installation

Install via npm:

npm i @videsk/mongoose-dummy

Usage

Generating fake data with Mongoose Dummy is straightforward:

const mongoose = require('mongoose');
const MongooseDummy = require('@videsk/mongoose-dummy');

// ES6 Import
import MongooseDummy from '@videsk/mongoose-dummy';

const dummy = new MongooseDummy(mongoose);
const output = dummy.model('users').generate();

Before using, ensure your Mongoose models contain a dummy key for any field you wish to include in the output. Fields without a dummy key will be ignored:

module.exports = function (mongoose) {
    const schema = new mongoose.Schema({
        name: {
            type: String,
            dummy: function() { return 'Dynamic Name'; } // Function returning a string
        },
        org: {
            type: String, // Will be ignored in the output
        },
    });

    return mongoose.model('users', schema);
};

The dummy key now supports only functions for dynamic data generation, enhancing flexibility and consistency across different data types.

Populate Feature

To populate fields referencing other models, set populate to true:

const schema = new mongoose.Schema({
    org: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'organizations',
        populate: true
    },
});

Custom Filters

Apply custom filters to refine which fields to include in the generated data:

function filter(object) {
    return object.include && object.arguments; // Return true to include the field
}
const output = dummy.model('users').generate(filter);

Array Length Customization

Set specific lengths for generated arrays:

const dummy = dummy.setup({ arrayLength: 20 }).model('users').generate();

Integration with Third-party Libraries

Integrate with libraries like Faker.js to enrich the variety of generated data:

import { faker } from '@faker-js/faker';

const dummy = new MongooseDummy(mongoose);
dummy.generators = { faker };
const output = dummy.model('users').generate();

Full Example

Refer to the detailed example provided to see Mongoose Dummy in action, showcasing integration and customization:

// Refer to the provided full example in documentation

Limitations

  • The populate feature is limited to one iteration on referenced models to avoid circular dependencies.
  • Handlebars template support has been removed in favor of more versatile function-based solutions.

Contributing

Contributions are welcome. Please follow the contributing guidelines outlined in the repository.

Tests

Run the test suite using:

npm run test

License

LGPL-2.1 License - By Videsk™