Custom fixtures generator for nodejs / mongodb in 30 seconds
Raphaël Dubigny2 min read
I recently needed to generate random users for a NodeJS project using mongo. I remember the time I used the powerful Alice fixture generator for my Symfony2 projects.
Actually, I didn’t find anything as complete as Alice but I found two very interesting npm modules.
The first one is faker. It generates random data such as names, addresses, etc.
The second one is pow-mongodb-fixtures. It allows you to record custom data in mongo in a snap.
We first need to install these modules. I choose to save them in my dev dependency but it’s totally up to you:
npm install faker --save-dev
npm install pow-mongodb-fixtures --save-dev
Then I created a coffee script to be called when I want to load random fixtures. It resets the content of the ‘myCollectionName’ collection of the ‘myDbName’ database. Then it enters objects that have two attributes: ‘lastName’ and ‘firstName’.
fixtures = require('pow-mongodb-fixtures').connect 'myDbName'
faker = require 'faker'
# Generate random data
users = []
for i in [1..10]
users.push
lastName: faker.name.lastName()
firstName: faker.name.firstName()
# Record these data in the 'myCollectionName' collection
fixtures.clearAndLoad {myCollectionName: users}, (err) ->
throw err if err
console.log '10 users have been recorded!'
fixtures.close ->
return
I can now load fixtures with
coffee fixtures-load.coffee
This exemple is very simple but you can generate anything you want with faker : addresses, phone numbers, dates. Check the faker github repository for more infos.