sequelize-singleton
Advanced tools
Comparing version 0.2.5 to 0.2.6
{ | ||
"name": "sequelize-singleton", | ||
"version": "0.2.5", | ||
"version": "0.2.6", | ||
"author": "Jacob Spizziri <jacob.spizziri@gmail.com> (https://github.com/jspizziri)", | ||
@@ -5,0 +5,0 @@ "license": "BSD-2-Clause", |
@@ -1,92 +0,1 @@ | ||
# sequelize-singleton | ||
sequelize-singleton is a simple singleton wrapper for the sequelize ORM, making it easier to configure and build models with Sequelize. | ||
* [Configuring sequelize-singleton](#configuring-sequelize-singleton) | ||
* [Custom Matcher](#custom-matcher) | ||
* [Accessing Sequelize](#accessing-sequelize) | ||
* [Defining Models](#defining-models) | ||
* [Logging](#logging) | ||
## Configuring sequelize-singleton | ||
***NOTE:*** `sequelize-singleton` must be configured upon app initialization, prior to [accessing your models](#accessing-sequelize) | ||
The sequelize-singleton `connect()` method accepts the same parameters as the Sequelize() object `database, username, password, options`. It is important to configure the `discover` array of the set of paths where your models should be discovered. | ||
```js | ||
// app.js | ||
var orm = require('sequelize-singleton'); | ||
orm.discover = [__dirname + '/models']; | ||
orm.connect( | ||
'test-db', | ||
'test-user', | ||
'secret1234', | ||
{ | ||
dialect: "mysql", | ||
port: 3306 | ||
}); | ||
``` | ||
Upon `connect()` sequelize-singleton will ***SYNCHRONOUSLY recurse*** through all of the subfolders located at the provided file paths looking for any files with the naming default convention `*.model.js`. | ||
## Custom matcher | ||
If you prefer to define your own naming convention instead of the default you can create a custom matching function which receives the file name as the parameter returns a `boolean` indicating if sequelize-singleton should attempt to load the file as a model. | ||
This function should be attached to `matcher` like so: | ||
```js | ||
orm.matcher = function(file){ | ||
if(//some condition or regex here) | ||
return true; | ||
return false; | ||
}; | ||
``` | ||
## Accessing sequelize | ||
Now you can access the sequelize instance and models wherever you need! | ||
```js | ||
// somefile.js | ||
var orm = require('sequelize-singleton'); | ||
var sequelize = orm.sequelize; | ||
var Sequelize = orm.Sequelize; | ||
var models = orm.models; | ||
var User = models.User; | ||
``` | ||
## Defining Models | ||
Models are defined as per the suggestion the article here: http://sequelizejs.com/articles/express. All associations are done via the class method `associate` which is injected with the models object. | ||
```js | ||
// user.model.js | ||
"use strict"; | ||
module.exports = function(sequelize, DataTypes) { | ||
var User = sequelize.define("User", { | ||
username: DataTypes.STRING | ||
}, { | ||
classMethods: { | ||
associate: function(models) { | ||
User.hasMany(models.Task) | ||
} | ||
} | ||
}); | ||
return User; | ||
}; | ||
``` | ||
## Logging | ||
Logging can be turned off by setting `orm.logger = false`. Additionally, a custom logging function can be defined, which is passed a parameter `log`. E.g. | ||
```js | ||
orm.logger = function(log){ | ||
//do some sweet logging stuff here | ||
} | ||
``` | ||
# This project has been migrated to: https://github.com/jspizziri/sequelize-connect |
3328
2