expressgit
mongoosegithub
seven-expressmongodb
express-session数据库
使用npm安装 express 和 脚手架express
$ npm install -g --save express express-generator
初始化项目npm
默认是使用Jade模版,可使用--view== 来指明其余的模版.
$ express seven-test $ cd seven-test $ npm install $ npm install mongoose seven-express express-session
app.js
配置默认的配置比较繁琐,咱们先来精简一下配置文件,只留下咱们须要的部分,若是还须要其余的中间件能够后面自行配置。json
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
属性。cookie
const mongoose = require('mongoose'); let User = new mongoose.Schema({ // 用户名 username: String, // 密码 password: String, // 用户身份 role: String, }); module.exports = User;
seven
的配置文件自定义配置能够参照后面的seven中间件的介绍,这里给出样例。session
{ "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起来。
$ 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
实现的从 Mongoose.schema 到 Restful API 的映射,并添加了其余的成熟功能模块,这也是我最近在拼命开发的一个中间件(或者说是插件),如今已经开源在github上,并发布在npm中。
如今有比较详细的中文文档,项目地址: seven
由于我如今学业比较重,因此开发速度不会特别快,可是我也会尽全力去维护这个开源项目,欢迎你们star使用。若是使用过程中有任何问题,能够直接联系我,也能够直接动手维护,我会第一时间回应你们,也欢迎你们对这种无后端模式提出宝贵的建议。
邮箱: 610347922@qq.com