This commit is contained in:
Typicode
2015-02-05 22:03:50 +01:00
parent b6b4a415b2
commit 80e0df1630
4 changed files with 45 additions and 39 deletions

View File

@ -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",

View File

@ -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)

View File

@ -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'

View File

@ -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)
})
})
}) })