Code Monkey home page Code Monkey logo

mongoose-simple-fixtures's Introduction

mongoose-simple-fixtures

provide initial data for mongoose models

usage

// mongoose is connection and models are already registered
var path = require('path')
  , msf = require('mongoose-simple-fixtures')
  , dir = path.resolve(__dirname, "./fixtures")
  ;

msf(dir, function(err, results) {
    if (err) console.log("loading data failed");
});

api

msf([mongoose], directory, [validate], [callback])

  • mongoose - optional reference to mongoose
  • directory - the path to the data, i.e. ./fixtures
  • validate - optional boolean to disable schema validation (default: null)
  • callback - optional function(err, results) {}

callback receives a results array. Each object in the array has a name property with the name of the model and three values, added, failed, and skipped, indicating the number of documents in that collection that were saved, failed to save, or already exist. (mongoose-simple-fixtures will not add duplicate data by attempting to find a record before the insertion.) The records inserted are also returned.

validate indicates whether schema validation should occur before inserting. For example, object reference validators which ensure the referenced document exists may prevent data from being loaded (i.e. cylical dependencies). To prevent this, invoke with the value of false to temporarily suspend the validators. After loading the data, the schema validation will be set to it's previous value. If no value is specified, mongoose-prime will not modify the model's validation settings. (cf. #validateBeforeSave)

setup

mongoose-simple-fixtures supports simple JSON files as well as extended-JSON files, the sort that mongoexport generates.

Each filename in the directory must correspond to the model name in mongoose. For example, if you used the directory fixtures and it contained two files:

$ ls fixtures/
templates.json users.json

then mongoose-simple-fixtures would look for two models on the mongoose reference called templates and users. If those models do not exist, the data loading will fail. Any files not ending in .json are skipped.

extra

mongoose-simple-fixtures utilizes mongoose-prime under the hood.

mongoose-simple-fixtures's People

Contributors

weisjohn avatar

Stargazers

Anne Thorpe avatar

Watchers

 avatar James Cloos avatar

mongoose-simple-fixtures's Issues

Handling references to other objects

Is there a way to handle references to other seeded data stores without manually specifying the id ?

User.json

[
{"username": "admin", "perms": [ {"permission_name": "write_all"} ]}
]

Permission.json

[
{"name": "write_all", "perm": "write", "url": "*"}
]

crashes if `.DS_Store` is in the folder

given a folder structure like:

$ ls -la fixtures/
total 88
drwxr-xr-x   9 john  staff    306 Aug 28 16:48 .
drwxr-xr-x  30 john  staff   1020 Aug 28 16:47 ..
-rw-r--r--   1 john  staff      0 Aug 28 16:48 .DS_Store
-rw-r--r--   1 john  staff   1778 Aug 27 22:02 foobar.json

msf can't recover:

MissingSchemaError: Schema hasn't been registered for model "".
Use mongoose.model(name, schema)
    at Mongoose.model (/Users/john/mysrc/clevertech/gms/api/node_modules/mongoose/lib/index.js:332:13)
    at loadData (/Users/john/mysrc/clevertech/gms/api/node_modules/mongoose-simple-fixtures/index.js:63:30)
    at /Users/john/mysrc/clevertech/gms/api/node_modules/mongoose-simple-fixtures/index.js:57:13
    at fs.js:334:14
    at FSReqWrap.oncomplete (fs.js:95:15)
[ERROR] 16:48:10 MissingSchemaError

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.