1.0.2 • Published 9 years ago

baucis-decorator-file v1.0.2

Weekly downloads
4
License
MIT
Repository
github
Last release
9 years ago

baucis-decorator-file

Allows properties to be exposed as files.

Install

npm install baucis-decorators baucis-decorator-file --save

Usage

Add the decorator and it will add the functionality to any properties containing a file field set to some mime-type. For the following example, you could GET the jsx as a file via something like /api/components/123.jsx or /api/components/my-component.123.jsx.

Example

controllers/Component.js

var baucis = require('baucis');
var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var extend = require('deep-extend');
var ResourceProps = require('../props/Resource.js');
var ResourceController = require('../controllers/Resource.js');

var ComponentProps = extend({}, ResourceProps);

ComponentProps.jsx = {
  type: String,
  file: 'text/jsx'
};

var ComponentSchema = new Schema(ComponentProps);
var ComponentModel = mongoose.model('Component', ComponentSchema);
var ComponentController = baucis.rest('Component');

var decorators = require('baucis-decorators');

// decorate controller
decorators.add.call(ComponentController, [
  'baucis-decorator-file',  // checks each property for any `file` fields and adds functionality accordingly
  ResourceController        // `ComponentController` will inherit all of `ResourceController`'s decorators
]);

/**
 * Expose controller.
 */
module.exports = ComponentController;