loopback-seeder
Expressive fixtures generator for Loopback
Installation
Basic usage
npm install --save loopback-seeder
yarn add loopback-seeder
Then, in your server/component-config.json
, add :
{
"loopback-seeder": {
"dir": "server/seeds",
"migrate": false,
"autoLoad": false
}
}
Write your YML fixture file server/seeds/data.yml
(relative to process.cwd() and adapt according your model) :
Group:
group{1..10}:
name: "Groupe {@} depuis les fixtures"
User:
user{1..10}:
name: "User {@} : {{name.lastName}}"
groupId: @group{@}
email: "{{internet.email}}"
birthDate: "2016-01-01"
favoriteNumber: "(function() { return Math.round(Math.random()*1000);})()"
How to load fixtures ?
-
If
autoLoad
is set totrue
, fixtures will be loaded when you start your application -
With the server:
app.seed()
(return a promise)e.g:
app.seed() .then(function() { console.log('Done!'); }) .catch(function(err) { console.log('Errors:', err); });
Configuration options
-
dir
(default value'server/seeds'
relative to process.cwd(), or provide a absolute path)The directory to seed from
-
migrate
(default valuefalse
)If set to
false
, data fixtures will be append instead of deleting all data from the database first. WARNINGtrue
will erase your database -
autoLoad
(default valuefalse
)
Features
-
Load data according your model
-
Multiple generators :
User: user{1..45}: name: "User number {@}"
{@}
represents the current identifier for the generator -
References :
Group: group{1..3}: name: "Groupe number {@}" User: user{1..9}: name: "User number {@}" group: @group1 # Reference to group1 user{10..19}: name: "User number {@}" group: @group.* # Reference to any matching group
@group1
represents the reference for the group1 and can be used in other fixtures@group.*
represents the reference for a random matching group -
Fakers :
User: user{1..10}: name: "User n°{@} : {{name.lastName}} {{name.firstName}}" email: "{{internet.email}}"
You can use Faker.js API to provide fake data
-
Custom function :
User: user{1..10}: favoriteNumber: "(function() { return Math.round(Math.random()*1000);})()"
You can use custom functions too
Credits
License
ISC