feathers-seeder
Straightforward data seeder for FeathersJS services.
About
FeathersJS is a dynamic application framework that makes it easy to prototype secure real-time Node applications.
It has uniform support for a wide variety of database options, both persistent and in-memory. However, it can often be a pain to bootstrap databases, especially for secure backends where creation permissions are locked down tightly.
feathers-seeder attempts to solve that problem by allowing you to fill your database (specifically feathers-memory) with similar of identical data every time your application is launched.
This can really be useful for projects using feathers-memory, or feathers-nedb to test applications.
Installation
These magic words will do the trick:
npm install --save feathers-seeder
Usage
- Configure the seeder.
- Call
app.seed()
. This will return a Promise.
Example:
const app = ;app ;
Configuration
feathers-seeder should be called as a function, with a single configuration object as a parameter.
To enable debug output logging, set the DEBUG
env variable accordingly (e.g. DEBUG=*
)
All data in the service will be wiped before seeding, unless delete
is set to false
. It is true
by default.
To disable feathers-seeder (i.e. at production), you can simply set the value disabled: true
on your configuration object. It is false
by default.
You can pass service parameters to each service via a params
object. This can be useful for projects that have services locked down via hooks.
This configuration object should contain an array called services
. Each object in this array will have a key pointing to the path of a registered Feathers service, and its value will be a configuration detail as follows.
Example:
delete: true disabled: false params: provider: 'rest' services: path: 'users' template: text: "Hello, world! I am {{name.firstName}}."
Configuration options:
-
count:
Number
- The number of times to generate objects. If you provide atemplate
ortemplate(s)
, thencount
objects adhering to the template(s) will be generated. Default =1
. -
delete:
Boolean
- If set to true, then existing data for this service will be deleted before seeding. Overrides globaldelete
setting. -
disabled:
Boolean
- Disables seeding for this service. -
params:
Object
- Additional parameters to pass to service methods. This is merged with (and supersedes) the globalparams
configuration via Object.assign. -
path:
String
- The path to the service to be seeded. -
randomize:
Boolean
- (default true) - The seeder will pick a random template to generate the item for the service. -
template:
Object
- A template object defining the structure of each object generated. For dynamic data, you can provide:- Template strings, as feathers-seeder uses @marak/Faker.js internally
- Custom parameterless functions
Example:
template:username: "{{internet.userName}}"password: "{{internet.password}}"name: "{{name.firstName}} {{name.lastName}}"email: "{{internet.email}}" -
templates:
Object[]
- An array of templates. If the optionrandomize
is true, each time an object is to be generated, a random template will be chosen. Otherwise, all templates will be generated for the service. -
callback:
Function(obj, cb)
- You can register a callback each time a database record is created. This allows you to seed nested services. :) Callbacks MUST return aPromise
.
services: count: 100 path: 'users' template: name: '{{name.firstName}} {{name.lastName}}' { console; // Call `seed` with regular service configuration. // This will return a Promise. return ; }
Example
;;;; const options = services: path: 'users' count: 10 template: name: '{{name.firstName}} {{name.lastName}}' ; const app = ; app;
Thanks
Thank you for using feathers-seeder. If you find any bugs, feel free to report an issue.
Follow me on Twitter: @thosakwe
Or check out my blog.