attach-model

0.3.0 • Public • Published

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[Array[column, 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

Package Sidebar

Install

npm i attach-model

Weekly Downloads

0

Version

0.3.0

License

MIT

Last publish

Collaborators

  • alxarch