原材料
express
mongoose
seven-express
express-session
Start
运用npm装置 express 和 脚手架
$ npm install -g --save express express-generator
初始化项目
默许是运用Jade模版,能够运用--view== 来指明其他的模版.
$ express seven-test $ cd seven-test $ npm install $ npm install mongoose seven-express express-session
Configure
举行 app.js
设置
默许的设置比较烦琐,我们先来精简一下设置文件,只留下我们须要的部份,假如还须要其他的中间件能够背面自行设置。
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
module.exports = app;
下面我们来举行进一步的设置,将我们须要的中间件引入进来,并设置。
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var mongoose = require('mongoose');
var seven = require('seven-express');
var router = express.Router();
var app = express();
// 衔接数据库
mongoose.connect('mongodb://localhost:27017/Test');
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// 增加session中间件
app.use(session({
secret: '12345',
name: 'seven-test',
cookie: {maxAge: 80000 },
resave: false,
saveUninitialized: true
}));
// 增加seven中间件
seven.creator(app, router, path.join(__dirname, 'schema'));
module.exports = app;
增加 schema
在项目目录下增加 schema
文件夹,然后在里面增加种种mongoose的schema文件。假如须要seven的权限治理功用,则默许须要增加 user
表,并增加 username
, password
, role
属性。
const mongoose = require('mongoose');
let User = new mongoose.Schema({
// 用户名
username: String,
// 暗码
password: String,
// 用户身份
role: String,
});
module.exports = User;
增加 seven
的设置文件
自定义设置能够参照背面的seven中间件的引见,这里给出样例。
{
"rule": {
"user" : {
"Create": {
"key": "username",
"bodyList": ["username", "role"]
},
"Update": {
"bodyList": ["username"]
}
}
},
"authority": {
"role": ["admin", "user", "superadmin"],
"filter": {
"user": {
"Create": false,
"Retrieve": ["admin"],
"Update": ["user", "admin", "superadmin"]
}
}
}
}
Run
如今就能把全部项目run起来。
$ npm start
假如一般,会涌现
users
Pagination get /user/page/:page
Create post /user
Delete delete /user/:id
Update put /user/:id
Login post /login
Retrieve get /user/:id
这些就是关于 schema
自动映照获得的 Restful API,具有可设置的参数搜检功用,具有可设置的权限治理功用。
到如今我们没有写一行代码,就完成了全部 Restful API 的后端功用。
Seven-express
那我们究竟是怎样做到如许的自动化映照的呢?
好吧,主如果 seven-express
完成的从 Mongoose.schema 到 Restful API 的映照,并增加了其他的成熟功用模块,这也是我最近在冒死开辟的一个中间件(或许说是插件),如今已开源在github上,并宣布在npm中。
如今有比较细致的中文文档,项目地点: seven
由于我如今学业比较重,所以开辟速率不会迥殊快,然则我也会尽尽力去保护这个开源项目,迎接人人star运用。假如运用历程当中有任何问题,能够直接联络我,也能够直接着手保护,我会第一时间回应人人,也迎接人人对这类无后端形式提出珍贵的发起。
邮箱: 610347922@qq.com