README.md
node-mongoose-fixtures
======================
[![Build Status](https://travis-ci.org/kennethklee/node-mongoose-fixtures.svg?branch=master)](https://travis-ci.org/kennethklee/node-mongoose-fixtures)
[![Code Climate](https://codeclimate.com/github/kennethklee/node-mongoose-fixtures.png)](https://codeclimate.com/github/kennethklee/node-mongoose-fixtures)
Create mongoose fixtures from a dataset.
This will iteratively insert records through mongoose.
install
-------
`npm install node-mongoose-fixtures`
usage
-----
```javascript
var fixtures = require('node-mongoose-fixtures');
fixtures({
<table name>: [
<record>,
<record>
],
<table name>: [
<record>,
<record>
]
});
```
examples
--------
```javascript
var mongoose = require('mongoose'),
Schema = mongoose.Schema,
fixtures = require('node-mongoose-fixtures');
// User
var userSchema = new Schema({
username: String,
password: String
});
mongoose.model('users', userSchema);
// Book
var bookSchema = new Schema({
title: String
});
mongoose.model('books', bookSchema);
// Create dataset immediately
fixtures({
users: [
{username: 'one', password: 'pass'},
{username: 'two', password: 'pass'}
],
books: [
{title: 'Enders Game'},
{title: 'Speaker of the Dead'}
]
}, function(err, data) {
// data is an array of all the documents created
});
// Name a dataset for future use
fixtures.save('users', {
users: [
{username: 'one', password: 'pass'},
{username: 'two', password: 'pass'}
]
});
// Use the named dataset
fixtures('users', function(err, data) {
// Again, data is an array of all documents created
});
```
api
---
### Create Dataset
`fixtures(dataset, <mongoose instance>, <callback>);`
Immediately creates the documents from the dataset through the mongoose connection.
* `dataset` can be a hash or a name of a named fixture.
* `mongoose instance` is optional and is a singular instance of mongoose.
* `callback` is an optional function when the action is complete. It's parameters are callback(error, data documents). Both arguments are arrays. The data documents are mongoose documents from the fixture data.
### Save a Named Fixture
`fixtures.save(name, dataset, <callback>);`
Save a fixture to be used for later.
* `name` is the name of your new named fixture.
* `dataset` is the hash of the dataset you want to save.
* `callback` is an optional function when the action is complete. It's parameters are callback(err, old fixtures). The old fixtures are what you've overwritten.
### Retrieve a Named Fixture's Dataset
`fixtures.get(name, <callback>);`
Retrieves a named fixture's dataset. If callback is omitted, this will simply return the named fixture's dataset.
* `name` is the name of the named fixture you wish to retrieve.
* `callback` is an optional function when the action is complete. It's parameters are callback(err, dataset).
### Clear Named Fixture
`fixtures.clear(<name>, <callback>);`
Clears named fixtures.
* `name` is optional. It's the name of the named fixture. If omitted, all named fixtures will be cleared.
* `callback` is an optional function when the action is complete. It has no parameters.
### Reset Database Collection(s)
`fixtures.reset(<model name>, <mongoose instance>, <callback>);`
Deletes all documents within a collection.
* `model name` is optional. It's the name of the collection. If omitted, all collections will be purged.
* `mongoose instance` is optional and is a singular instance of mongoose.
* `callback` is an optional function when the action is complete. It's parameters are the same as the callback from `mongoose.Model.remove()`
support
-------
Donations are welcome to help support the continuous development of this project.
[![Flattr][flattr-image]][flattr-url]
[![Bitcoin][bitcoin-image]][bitcoin-url]
[flattr-url]: https://flattr.com/submit/auto?user_id=kennethkl&url=https://github.com/kennethklee/node-mongoose-fixtures&title=node-mongoose-fixtures&language=&tags=github&category=software
[flattr-image]: http://img.shields.io/badge/flattr-donate-green.svg?style=flat-square
[bitcoin-image]: http://img.shields.io/badge/bitcoin-1L9EhwhiSTPtEoXeGDBABRXmEJwovwkWpk-green.svg?style=flat-square
[bitcoin-url]: https://www.coinbase.com/checkouts/5653371de64aa773f372a1e33c569095?name=node-mongoose-fixtures