README
Table of Contents
- Febby
Febby
Febby
Parameters
config
Object Represents basic app setup. (optional, default{}
)
Examples
const config = {
port: 3000,
hostname: 'abc.xyz',
db: {
url: 'mongodb://localhost/test'
},
bodyParser: {},
cors: {},
helmet: {},
version: 'v1'
};
const Febby = require('febby');
const febby = new Febby(config);
febby.bootstrap();
route
Register Route
Parameters
routeConfig
Object the route object used to create route configuration.
Examples
const febby = new Febby(config);
// create router
const api = febby.router('/api');
febby.route({
router: api,
method: 'get',
path: '/',
middlewares: [],
handler: (req, res, next) => {
// do business
}
});
febby.bootstrap(()=>{
console.log('app started');
})
routes
Register Route list
Parameters
routes
Array list of route objects
Examples
const febby = new Febby(config);
// create router
const api = febby.router('/api');
const routes = [
{
router: api,
method: 'get',
path: '/',
middlewares: [],
handler: (req, res, next) => {
// do business
}
},
{
router: api,
method: 'get',
path: '/echo',
middlewares: [],
handler: (req, res, next) => {
res.json({echo:req.url});
}
}
];
febby.routes(routes);
febby.bootstrap(()=>{
console.log('app started');
})
middleware
Register middleware.
Parameters
middleware
Function Represents middleware function.router
Object Represents Express Router object by default it is app router object.
Examples
const febby = new Febby(config);
// create router
const api = febby.router('/api');
const fn = (req,res,next)=>{
// some logic or validation
next();
}
const fn2 = (req,res,next)=>{
// some validation logic
next();
}
// middleware runs on api router
febby.middleware(fn,api);
// middleware runs on app router
febby.middleware(fn);
middlewares
Register Middlewares.
Parameters
middlewares
Array<Object> Represents list of middlewares.router
Object Represents Express Router Object, default to app router.
Examples
const febby = new Febby(config);
// create router
const api = febby.router('/api');
const fn = (req,res,next)=>{
// some logic or validation
next();
}
const fn2 = (req,res,next)=>{
// some validation logic
next();
}
// middleware list runs on api router and router is optional
febby.middlewares([fn,fn2],api);
router
Register a Router.
Parameters
url
string Represents url.router
Object Represents Express Router object, default to app router object.options
Object Represents Express Router config options.
Examples
const febby = new Febby(config);
// create router
const api = febby.router('/api'); // path = /api
// users subroute mounted on /api
const userApi = febby.router('/users',api); // path = /api/users
const fn = (req,res,next)=>{
// some logic or validation
next();
}
const fn2 = (req,res,next)=>{
// some validation logic
next();
}
// this middleware list runs on api router
febby.middlewares([fn, fn2], userApi);
// this middleware runs on app router
febby.middleware(fn);
febby.route({
router: userApi,
method: 'get',
path: '/',
middlewares: [],
handler: (req, res, next) => {
// do business
}
});
febby.bootstrap(()=>{
console.log('app started');
})
connection
Establish Connection between app and database.
Parameters
Examples
const config = {
port: 3000,
hostname: 'abc.xyz',
bodyParser: {},
cors: {},
helmet: {},
version: 'v1'
}
const febby = new Febby(config);
// create router
const api = febby.router('/api');
const fn = (req,res,next)=>{
// some logic or validation
next();
}
const fn2 = async (req,res,next)=>{
const db = febby.model(); // Returns db models object
const users = await db.user.find({});
// some validation logic on users
next();
}
// this middleware runs on api router
febby.middleware(fn,api);
// this middleware runs on app router
febby.middleware(fn);
// if db config specified then febby will try to connect to database automatically
// to make database connection externally then use febby.connection
const options = {
useNewUrlParser: true,
// other mongoose options
}
const url = 'mongodb://localhost:27017/test';
febby.connection(url, options)
febby.route({
router: api,
method: 'get',
path: '/:id',
middlewares: [],
handler: async (req, res, next) => {
const user = febby.Model('user'); // get registered model by name
const info = await user.findById(req.params.id);
res.status(200).send(info);
}
});
// start the app
febby.bootstrap(()=>{
console.log('app started');
})
crud
Creates CRUD on given route object with specific config.
Parameters
path
string Represents url path.config
Object Represents CRUD configuration.model
Object Represents Model config object.router
Object Represents Express Router object. it is optional.
Examples
const febby = new Febby(config);
// create router
const api = febby.router('/api');
const bookApi = febby.router('/books',api);
const bookCrudConfig = {
crud: true,
middlewares:[]
};
const bookSchema = {
name: { type: String },
author:{ type: Number }
};
const bookModel = febby.model('books',bookSchema);
// creates POST method on book api
// if model already registered then use febby.model('books') to get model object
febby.crud('/', bookCrudConfig, bookModel, bookApi);
models
Returns models object.
Examples
const febby = new Febby(config);
// create router
const api = febby.router('/api');
const fn = (req,res,next)=>{
// some logic or validation
next();
}
const fn2 = async (req,res,next)=>{
const db = febby.model(); // Returns db models object
const users = await db.user.find({});
// some validation logic on users
next();
}
// this middleware runs on api router
febby.middleware(fn,api);
// this middleware runs on app router
febby.middleware(fn);
febby.route({
router: api,
method: 'get',
path: '/',
middlewares: [],
handler: (req, res, next) => {
// do business
}
});
febby.bootstrap(()=>{
console.log('app started');
})
Returns Object Returns mongoose models object.
model
Rigister and Returns model object.
Parameters
Examples
const febby = new Febby(config);
// create router
const api = febby.router('/api');
const fn = (req,res,next)=>{
// some logic or validation
next();
}
const fn2 = async (req,res,next)=>{
const db = febby.model(); // Returns db models object
const users = await db.user.find({});
// some validation logic on users
next();
}
// this middleware runs on api router
febby.middleware(fn,api);
// this middleware runs on app router
febby.middleware(fn);
febby.route({
router: api,
method: 'get',
path: '/:id',
middlewares: [],
handler: async (req, res, next) => {
const user = febby.Model('user'); // get registered model by name
const info = await user.findById(req.params.id);
res.status(200).send(info);
}
});
febby.bootstrap(()=>{
console.log('app started');
})
bootstrap
if database "db" object specified in config then febby will try to connect database on bootstarp.
Parameters
fn
Function Represents callback function which will called after app start up.
Examples
const febby = new Febby(config);
// create router
const api = febby.router('/api');
const fn = (req,res,next)=>{
// some logic or validation
next();
}
const fn2 = async (req,res,next)=>{
const db = febby.model(); // Returns db models object
const users = await db.user.find({});
// some validation logic on users
next();
}
// this middleware runs on api router
febby.middleware(fn,api);
// this middleware runs on app router
febby.middleware(fn);
febby.route({
router: api,
method: 'get',
path: '/:id',
middlewares: [],
handler: async (req, res, next) => {
const user = febby.Model('user'); // get registered model by name
const info = await user.findById(req.params.id);
res.status(200).send(info);
}
});
// start the app
febby.bootstrap(()=>{
console.log('app started');
})
expressApp
Get Express App object
Examples
febby.shutdown();
shutdown
Shutdown app
Examples
febby.shutdown();
closeConnection
Close database connections
Examples
febby.closeConnection();