expo-decorators
v1.0.5
Published
Node Express module: less code to run a server.
Downloads
18
Maintainers
Readme
expo-decorators
Node Express module. Write less code to run server.
[TOC]
Requirements
- express 4.18.2
- node 12
- typescript 4
- typedoc
Install
npm install expo-decorators --save
Usage
Connecting Server
in your server.ts file.
import { Server, Database } from "expo-decorators";
//LOAD YOUR CONTROLLERS
import "./controllers";
try {
const database = new Database(
process.env.DATABASE as string,
process.env.NODE_ENV as string
);
database.connect();
console.log("Database connected.");
} catch (error) {
console.log(error);
process.abort();
}
export = Server.create({
views: 'views',
public: 'public',
enableSession: true,
sessionSecret: process.env.DATABASE as string
});
Options Server.create(options)
- views - Template directory for hbs files
- public - public assets folder
- enableSession - Enable or disable session
- sessionSecret - unique secret key for session
- beforeRouteInjection (optional) - a callback function that runs before Route mounting
- afterRouteInjection (optional) - a callback function that runs after Route mounting
Controller
file controllers/UsersController.ts
import { Request, Response } from 'express';
import { Controller, Get, Post, Put, Delete, Patch, Middleware } from 'expo-decorators';
@Controller('/users', middlewareExample)
export class UsersController {
static children: Array<IRouteParams> = []; /// required
@Middleware(anyMiddleware) /// single middleware
@Get('/')
index(req: Request, res: Response) {
res.json({
_id: "kdiei033-303939kf",
name: 'User',
address: "Singapore"
});
}
@Middleware(anyMiddleware)
@Middleware(anotherMiddleware)
@Post('/')
oneUser(req: Request, res: Response) {
res.send("You are a User");
}
}
More Decorators are described below
Route Decorators
@Controller
This is Class decorator
// without middleware
@Controller('/users')
class User {...}
// with one middleware
@Controller('/users', myMiddleware)
class User {...}
// with many middlewares
@Controller('/users', [myMiddleware, anotherMiddleware])
class User {...}
@Middleware
Method Decorator
// without middleware
@Controller('/users')
class User {
@Middleware(myMiddleware)
@Post('/')
create(req, res, next){...}
}
@Post
Method Decorator
// without middleware
@Controller('/users')
class User {
@Post('/')
create(req, res, next){...}
}
@Get
Method Decorator
// without middleware
@Controller('/users')
class User {
@Get('/')
create(req, res, next){...}
}
@Put
Method Decorator
// without middleware
@Controller('/users')
class User {
@Put('/')
create(req, res, next){...}
}
@Patch
Method Decorator
// without middleware
@Controller('/users')
class User {
@Patch('/')
create(req, res, next){...}
}
@Delete
Method Decorator
// without middleware
@Controller('/users')
class User {
@Delete('/')
create(req, res, next){...}
}