Allow middlewares to be set before json-server middlewares

This commit is contained in:
Typicode
2015-04-17 21:35:24 +02:00
parent 3babbb7f0d
commit ca867e8563
7 changed files with 47 additions and 42 deletions

View File

@ -139,10 +139,11 @@ var object = {
]
}
var router = jsonServer.router(object) // Express router
var server = jsonServer.create() // Express server
server.use(router)
server.use(jsonServer.defaults) // Default middlewares (logger, public, cors)
server.use(jsonServer.router(object)) // Express router
server.listen(3000)
```

View File

@ -64,8 +64,9 @@ function start(object, filename) {
} else {
var router = jsonServer.router(object)
}
var server = jsonServer.create()
var server = jsonServer.create()
server.use(jsonServer.defaults)
server.use(router)
server.listen(port, argv.host)
}

29
src/defaults.js Normal file
View File

@ -0,0 +1,29 @@
var fs = require('fs')
var logger = require('morgan')
var cors = require('cors')
var serveStatic = require('serve-static')
var errorhandler = require('errorhandler')
var arr = []
// Logger
arr.push(logger('dev', {
skip: function(req, res) { return req.path === '/favicon.ico' }
}))
// Serve static files
if (fs.existsSync(process.cwd() + '/public')) {
arr.push(serveStatic(process.cwd() + '/public'));
} else {
arr.push(serveStatic(__dirname + '/public'));
}
// CORS
arr.push(cors({ origin: true, credentials: true }))
if (process.env.NODE_ENV === 'development') {
// only use in development
arr.push(errorhandler())
}
module.exports = arr

View File

@ -1,4 +1,11 @@
var express = require('express')
module.exports = {
create: require('./server'),
create: function () {
var server = express()
server.set('json spaces', 2)
return server
},
defaults: require('./defaults'),
router: require('./router')
}

View File

@ -176,6 +176,7 @@ module.exports = function(source) {
// Remove dependents documents
var removable = utils.getRemovable(db.object)
console.log(removable)
_(removable).each(function(item) {
db(item.name).remove(item.id)

View File

@ -1,36 +0,0 @@
var fs = require('fs')
var http = require('http')
var express = require('express')
var logger = require('morgan')
var cors = require('cors')
var serveStatic = require('serve-static')
var errorhandler = require('errorhandler')
module.exports = function() {
var server = express()
// Logger
server.use(logger('dev', {
skip: function(req, res) { return req.path === '/favicon.ico' }
}))
// Beautify JSON
server.set('json spaces', 2)
// Serve static files
if (fs.existsSync(process.cwd() + '/public')) {
server.use(serveStatic(process.cwd() + '/public'));
} else {
server.use(serveStatic(__dirname + '/public'));
}
// CORS
server.use(cors({ origin: true, credentials: true }))
if (process.env.NODE_ENV === 'development') {
// only use in development
server.use(errorhandler())
}
return server
}

View File

@ -34,8 +34,10 @@ describe('Server', function() {
{id: 'abcd-1234', url: 'http://example.com', postId: 1}
]
server = jsonServer.create()
router = jsonServer.router(db)
server = jsonServer.create().use(router)
server.use(jsonServer.defaults)
server.use(router)
})
describe('GET /db', function() {