mirror of
https://github.com/typicode/json-server.git
synced 2025-07-29 21:23:41 +08:00
Refactor
This commit is contained in:
@ -14,7 +14,7 @@
|
|||||||
"errorhandler": "^1.2.0",
|
"errorhandler": "^1.2.0",
|
||||||
"express": "^4.9.5",
|
"express": "^4.9.5",
|
||||||
"got": "^1.2.2",
|
"got": "^1.2.2",
|
||||||
"lowdb": "^0.7.0",
|
"lowdb": "^0.7.1",
|
||||||
"method-override": "^2.1.2",
|
"method-override": "^2.1.2",
|
||||||
"morgan": "^1.3.1",
|
"morgan": "^1.3.1",
|
||||||
"node-uuid": "^1.4.2",
|
"node-uuid": "^1.4.2",
|
||||||
|
48
src/index.js
48
src/index.js
@ -1,33 +1,43 @@
|
|||||||
var fs = require('fs')
|
var fs = require('fs')
|
||||||
var path = require('path')
|
var path = require('path')
|
||||||
|
|
||||||
// LowDB
|
// LowDB
|
||||||
var low = require('lowdb')
|
var low = require('lowdb')
|
||||||
var _db = require('underscore-db')
|
low.mixin(require('underscore-db'))
|
||||||
var _inflections = require('underscore.inflections')
|
low.mixin(require('underscore.inflections'))
|
||||||
|
|
||||||
low.mixin('_db')
|
|
||||||
low.mixin('_inflections')
|
|
||||||
|
|
||||||
// Express
|
// Express
|
||||||
var http = require('http')
|
var http = require('http')
|
||||||
var express = require('express')
|
var express = require('express')
|
||||||
var logger = require('morgan')
|
var logger = require('morgan')
|
||||||
var cors = require('cors')
|
var cors = require('cors')
|
||||||
var methodOverride = require('method-override')
|
var methodOverride = require('method-override')
|
||||||
var bodyParser = require('body-parser')
|
var bodyParser = require('body-parser')
|
||||||
var serveStatic = require('serve-static')
|
var serveStatic = require('serve-static')
|
||||||
var errorhandler = require('errorhandler')
|
var errorhandler = require('errorhandler')
|
||||||
|
|
||||||
// json-server
|
// json-server
|
||||||
var utils = require('./utils')
|
var utils = require('./utils')
|
||||||
var createRoutes = require('./create-routes')
|
var getRoutes = require('./routes')
|
||||||
|
|
||||||
low.mixin({ createId: utils.createId })
|
low.mixin({ createId: utils.createId })
|
||||||
|
|
||||||
module.exports = function(object, filename) {
|
module.exports = function(object, filename) {
|
||||||
var server = express()
|
var server = express()
|
||||||
var routes = createRoutes(object, filename)
|
|
||||||
|
// Create database
|
||||||
|
if (filename) {
|
||||||
|
var db = low(filename)
|
||||||
|
} else {
|
||||||
|
var db = low()
|
||||||
|
db.object = object
|
||||||
|
}
|
||||||
|
|
||||||
|
// Expose db
|
||||||
|
server.db = db
|
||||||
|
|
||||||
|
// Get routes
|
||||||
|
var routes = getRoutes(db)
|
||||||
|
|
||||||
// Don't use logger if json-server is mounted
|
// Don't use logger if json-server is mounted
|
||||||
if (!module.parent) {
|
if (!module.parent) {
|
||||||
@ -39,12 +49,14 @@ module.exports = function(object, filename) {
|
|||||||
server.use(bodyParser.urlencoded({ extended: false }))
|
server.use(bodyParser.urlencoded({ extended: false }))
|
||||||
server.use(methodOverride())
|
server.use(methodOverride())
|
||||||
|
|
||||||
|
// Serve static files
|
||||||
if (fs.existsSync(process.cwd() + '/public')) {
|
if (fs.existsSync(process.cwd() + '/public')) {
|
||||||
server.use(serveStatic(process.cwd() + '/public'));
|
server.use(serveStatic(process.cwd() + '/public'));
|
||||||
} else {
|
} else {
|
||||||
server.use(serveStatic(__dirname + '/public'));
|
server.use(serveStatic(__dirname + '/public'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CORS
|
||||||
server.use(cors({ origin: true, credentials: true }))
|
server.use(cors({ origin: true, credentials: true }))
|
||||||
|
|
||||||
server.get('/db', routes.showDatabase)
|
server.get('/db', routes.showDatabase)
|
||||||
|
@ -1,20 +1,7 @@
|
|||||||
var _ = require('underscore')
|
var _ = require('underscore')
|
||||||
var low = require('lowdb')
|
|
||||||
var _db = require('underscore-db')
|
|
||||||
var _inflections = require('underscore.inflections')
|
|
||||||
var utils = require('./utils')
|
var utils = require('./utils')
|
||||||
|
|
||||||
low.mixin(_db)
|
module.exports = function(db) {
|
||||||
low.mixin(_inflections)
|
|
||||||
|
|
||||||
module.exports = function(object, filename) {
|
|
||||||
if (filename) {
|
|
||||||
var db = low(filename)
|
|
||||||
} else {
|
|
||||||
var db = low()
|
|
||||||
db.object = object
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
// GET /db
|
// GET /db
|
||||||
showDatabase: function(req, res, next) {
|
showDatabase: function(req, res, next) {
|
||||||
@ -85,6 +72,7 @@ module.exports = function(object, filename) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sort
|
||||||
if(_sort) {
|
if(_sort) {
|
||||||
_order = _order || 'ASC'
|
_order = _order || 'ASC'
|
||||||
|
|
@ -273,18 +273,24 @@ describe('Server', function() {
|
|||||||
request(server)
|
request(server)
|
||||||
.get('/')
|
.get('/')
|
||||||
.expect(/You're successfully running JSON Server/)
|
.expect(/You're successfully running JSON Server/)
|
||||||
.expect(200, done);
|
.expect(200, done)
|
||||||
});
|
})
|
||||||
});
|
})
|
||||||
|
|
||||||
describe('GET /stylesheets/style.css', function() {
|
describe('GET /stylesheets/style.css', function() {
|
||||||
it('should respond with css', function(done) {
|
it('should respond with css', function(done) {
|
||||||
request(server)
|
request(server)
|
||||||
.get('/stylesheets/style.css')
|
.get('/stylesheets/style.css')
|
||||||
.expect('Content-Type', /css/)
|
.expect('Content-Type', /css/)
|
||||||
.expect(200, done);
|
.expect(200, done)
|
||||||
});
|
})
|
||||||
});
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('Database #object', function() {
|
||||||
|
it('should be accessible', function() {
|
||||||
|
assert(server.db.object)
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user