0.3.0 • Published 8 years ago

attach-model v0.3.0

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

attach-model

A middleware to attach Sequelize models to a request

Usage

var attachModel = require("attach-model");

app.get("/foo/:id", attachModel(models.Foo, {as: "foo", required: true}), function (req, res, next) {
	// req.foo will be the result of models.Foo.find({where: {id: req.params.id}})
	// If required is true an NotFoundError will have been thrown by now.
	res.json(req.foo);
	next()
});

Request parameters

In order to map request parameters to query options, the value of query-related options (where, include, order, offset, limit) is searched recursively for either a function value or a $get key to retrieve a value from the req object by path notation. In code:

var options = {
	where: {
		id: {
			$in: {
				$get: "body.ids"
			}
		}
		created_at: {
			$gt: function (req) {
				return req.query ? req.query.since : new Date(0);
			}
		}
	}
};

Options

options.required

Boolean default: false

If true a 404 response will be returned if no model is found. If options.multiple is true this is not applicable.

options.as

String default: model name lower case

Request property name for results.

options.multiple

Boolean default: false

Will use model.findAll() to to retrieve multiple results

options.include

Array{model, as, ...}

Include option for sequelize find. See request parameters

options.where

Array {} default: {id: {$get: "params.id"}}

Require option for sequelize find. See request parameters

options.errorClass

Function default: NotFoundError

If options.multiple is true this is not applicable.

options.errorMessage

String default: "Model not found"

If options.multiple is true this is not applicable.

options.ttl

Number default: 0

Cache TTL in seconds for results.

This is a poor man's cache solution storing the resulting Model instances to a POJO. Use for small and frequently accessed result sets to improve performance.

options.order

Array[Arraycolumn, order] default: []

Specify query result order. See request parameters

options.limit

Number default: null

Specify query results limit. See request parameters

options.offset

Number default: 0

Specify query results offset. See request parameters

0.3.0

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.4

9 years ago

0.1.3

9 years ago

0.1.2

9 years ago

0.1.1

9 years ago

0.1.0

9 years ago