0.2.8Febby
(Object
= {})
Represents basic app setup.
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();
Register Route
(Object)
the route object used to create route configuration.
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');
})
Register Route list
(Array)
list of route objects
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');
})
Register middleware.
(Function)
Represents middleware function.
(Object)
Represents Express Router object by default it is app router object.
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);
Register Middlewares.
(Object)
Represents Express Router Object, default to app router.
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);
Register a Router.
(string)
Represents url.
(Object)
Represents Express Router object, default to app router object.
(Object)
Represents Express Router config options.
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');
})
Establish Connection between app and database.
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');
})
Creates CRUD on given route object with specific config.
(string)
Represents url path.
(Object)
Represents CRUD configuration.
(Object)
Represents Model config object.
(Object)
Represents Express Router object. it is optional.
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);
Returns models object.
Object:
Returns mongoose models object.
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');
})
Rigister and Returns model object.
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');
})
if database "db" object specified in config then febby will try to connect database on bootstarp.
(Function)
Represents callback function which will called after app start up.
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');
})
Get Express App object
febby.shutdown();
Shutdown app
febby.shutdown();
Close database connections
febby.closeConnection();