express-orm-mvc
As everyone the 1st time I start to use express, there was many problem i have to solve as
- Database
- App structure
- Router
- Separate modules
- ...
So hope this library help someone like me.
Any ideas are appreciated.
Features
- MVC
- This library just help you to structure your code and scale up later
- No Express or ORM hack
- Config Express and ORM by yourself (Fully control)
Dependencies
By default:
You can specify those dependencies version by option, please refer to this
Installation
npm install express-orm-mvc --save
Database package
npm install <your database package>
//example
npm install mysql
Refer to ORM document Connecting to Database
App structure
/
models/ -- all of your models here
controllers/ -- all of your controllers here
views/
config/
express.js -- your express config
orm.js -- your orm config
routes.js -- router
settings.js -- app settings (ip, port, database, ...)
app.js -- root
Please check example folder
How to use
Please check example folder or follow these document
Init
{ iferr console; return; console;};
Models
A model file should be like this
module { //define your orm model here};
Example:
models/post.js
module { var Post = db;};
Check ORM document Defining Models
Note:
express-orm-mvc
loads models by alphabet order.
For example comment
model has one post
(many-to-one relationship) as post_id
field, so post
model must be loaded before comment
model.
Solution: name the file models name as 0_post.js
and comment.js
.
You can check example
Controllers
A controller file should be like this
moduleexports = //define your controller here;
Example:
controllers/post.js
moduleexports = { res; } { reqmodelspost; } { reqmodelspost; };
Note: you can list all of your models in req.models, check more here
Settings
config/settings.js
A settings file should be like this
moduleexports = mode1: //development ip: <ip> port: <port> db: // orm database setting object mode2: //production ip: <ip> port: <port> db: // orm database setting object ;
Example:
moduleexports = development: ip: '127.0.0.1' port: 8080 db: host: '127.0.0.1' port: 3306 protocol: 'mysql' user: 'root' password: '123456789' database: 'express-orm-mvc-test' connectionLimit: 100 production: ip: '127.0.0.1' port: 8080 db: host: '127.0.0.1' port: 3306 protocol: 'mysql' user: 'root' password: '123456789' database: 'express-orm-mvc-test' connectionLimit: 100 ;
Note: You should set your NODE_ENV variable (development or production), or you can by pass by send directly the mode option when init, check here
Check ORM document Connecting to Database
Express config
config/express.js
A express config file should be like this
module { //any express config here};
Example:
module { app; app; app; app;};
Check Express document api
Note:
- As you see there is no
views
folder in app structure, so create and manage by yourself - Library will start a server automatically, so no need this kind of this stuff
http;
ORM config
config/orm.js
A orm config file should be like this
module { //any orm config here};
Example:
module { dbsettings;};
Check ORM document Settings
Note: Library will sync database automatically.
Routes config
config/routes.js
A routes config file should be like this
module { //routes here};
Example:
module { app; app; app;};
Options
mode: 'development' //default: production path: __dirname //default: auto detect express: //specify your express version orm: //specify your orm version callback;
Example:
var express = // Express 4var orm = // ORM 2.1.0 mode: 'development' path: '/Code/Project' express: express orm: orm callback;
Return object
express
orm
server
web server instance
database
orm database instance
app
express app instance
settings
the current settings
mode
the current mode
{ mvcexpress; mvcorm; mvcserver; mvcdatabase; mvcapp; mvcsettings; mvcmode;};
Notes
For your convenience, you can get
models
: all the orm modelssettings
: the running setingsmode
: the running mode
from express req
{ reqmodels; reqsettings; reqmode;}
from express config file
//config/express.jsmodule { mvcmode mvcsettings};
from orm config file
//config/orm.jsmodule { mvcmode mvcsettings};