baucis-decorator-file
v1.0.2
Published
Allows properties to be exposed as files.
Downloads
9
Maintainers
Readme
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;