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